간단한 로거를 사용한 스트림 조작기

동적

그래서 저는이 간단한 C ++ Logger 클래스를 가지고 있습니다.

class Log{
public:
    Log(const int& msgLevel = 1){
        this->msgLevel = msgLevel;
    }

    template <class T>
    Log& operator<<(const T& v){
        if (msgLevel<=level) {
            std::cout << v;
        }
        return *this;
    }

    ~Log(){

    }

    static int level;
    int msgLevel;
};

int Log::level = 1;

다음과 같이 사용할 수 있습니다.

Log(1)<<"My debug info: "<<otherVariable;

문제는 내가 사용하려고 할 때입니다 endl.

Log(1)<<"My debug info: "<<otherVariable<<endl;

이 오류가 발생합니다.

error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'Log' (or there is no acceptable conversion)

이 오류를 해결하려면 다음과 같이 클래스에 다른 메서드를 추가해야합니다.

// For manipulators like endl
Log& operator<< (ostream& (*pf) (ostream&)) {
    if (msgLevel<=level) {
        cout << pf;
    }

    return *this;
}

그러나 endl그것을 처리 하기 위해이 방법을 추가하는 것은 나에게 약간 과잉 인 것처럼 보입니다. 더 나은 대안이 있습니까?

또 다른 대안은 endl 대신 "\ n"을 사용하는 것입니다.

본 카토

endl은 함수 템플릿 이기 때문에 의 간단한 버전으로 operator<<는 충분하지 않습니다..에 대해 서로 다른 템플릿 인수를 사용하여 일치시킬 수있는 여러 방법이 있기 때문입니다 endl. 두 번째 오버로드를 추가하는 것이 아마도 최선의 방법 일 것입니다.

그러나 다음과 같이 일반적인 논리를 제거 할 수 있습니다.

template <class T>
Log& operator<<(const T& v){ return write(v); }

Log& operator<<(ostream& (*v)(ostream&)){ return write(v); }


template <typename T>
Log& write(const T &v)
{
    if (msgLevel<=level) {
        std::cout << v;
    }
    return *this;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Strncpy를 사용하여 C ++로 간단한 텍스트 편집기 만들기

분류에서Dev

스트림을 사용하여 데이터를 조작 한 다음 CSV에 쓰기

분류에서Dev

AWK를 사용한 텍스트 조작

분류에서Dev

sed를 사용한 텍스트 조작

분류에서Dev

sed를 사용한 텍스트 조작

분류에서Dev

간단한 bash 스크립트를위한 간단한 GUI 작성

분류에서Dev

JS를 사용한 간단한 사용자 이름 프롬프트가 제대로 작동하지 않음

분류에서Dev

Textarea를 사용하는 간단한 리치 텍스트 편집기

분류에서Dev

RSA 자바 스크립트를 사용한 간단한 예?

분류에서Dev

C ++ 스트림 조작기를 단일 변수로 연결

분류에서Dev

Axios를 사용한 파일 스트림

분류에서Dev

그림 / 표 참조를 사용한 MSO 단어 학술 작문

분류에서Dev

스트림 만 사용하여 CSV 또는 간단한 텍스트 파일 만들기

분류에서Dev

AJAX를 사용하는 PHP 스크립트에 대한 간단한 호출이 작동하지 않음

분류에서Dev

파일 스트림 C ++에서 간단한 함수 열기

분류에서Dev

간단한 순환을 스트림으로 바꾸는 방법?

분류에서Dev

웹 사이트 분류를위한 간단한 기계 학습

분류에서Dev

간단한 Html dom 파서를 사용하여 특정 검색 텍스트로 링크 가져 오기

분류에서Dev

전체 코드 범위로 간단한 로거 기능 테스트

분류에서Dev

사용자 지정 셀에서보기 컨트롤러로의 간단한 segue

분류에서Dev

string.h를 사용하여 간단한 String 클래스 만들기

분류에서Dev

awk를 사용한 복잡한 텍스트 조작

분류에서Dev

Linux 용 간단한 찾기 및 복사 스크립트

분류에서Dev

htaccess를 사용한 간단한 URL 재 작성

분류에서Dev

XUnit을 사용하여 간단한 테스트 케이스를 작성하는 방법은 무엇입니까?

분류에서Dev

간단한 C ++ 로깅 클래스-ostream 참조 초기화

분류에서Dev

업스트림 소스로 다른 프로젝트 (동일한 조직 내)의 아티팩트 피드 사용

분류에서Dev

비트를 사용한 조작

분류에서Dev

fgetc / fwrite를 사용한 간단한 바이트 변경 실패

Related 관련 기사

  1. 1

    Strncpy를 사용하여 C ++로 간단한 텍스트 편집기 만들기

  2. 2

    스트림을 사용하여 데이터를 조작 한 다음 CSV에 쓰기

  3. 3

    AWK를 사용한 텍스트 조작

  4. 4

    sed를 사용한 텍스트 조작

  5. 5

    sed를 사용한 텍스트 조작

  6. 6

    간단한 bash 스크립트를위한 간단한 GUI 작성

  7. 7

    JS를 사용한 간단한 사용자 이름 프롬프트가 제대로 작동하지 않음

  8. 8

    Textarea를 사용하는 간단한 리치 텍스트 편집기

  9. 9

    RSA 자바 스크립트를 사용한 간단한 예?

  10. 10

    C ++ 스트림 조작기를 단일 변수로 연결

  11. 11

    Axios를 사용한 파일 스트림

  12. 12

    그림 / 표 참조를 사용한 MSO 단어 학술 작문

  13. 13

    스트림 만 사용하여 CSV 또는 간단한 텍스트 파일 만들기

  14. 14

    AJAX를 사용하는 PHP 스크립트에 대한 간단한 호출이 작동하지 않음

  15. 15

    파일 스트림 C ++에서 간단한 함수 열기

  16. 16

    간단한 순환을 스트림으로 바꾸는 방법?

  17. 17

    웹 사이트 분류를위한 간단한 기계 학습

  18. 18

    간단한 Html dom 파서를 사용하여 특정 검색 텍스트로 링크 가져 오기

  19. 19

    전체 코드 범위로 간단한 로거 기능 테스트

  20. 20

    사용자 지정 셀에서보기 컨트롤러로의 간단한 segue

  21. 21

    string.h를 사용하여 간단한 String 클래스 만들기

  22. 22

    awk를 사용한 복잡한 텍스트 조작

  23. 23

    Linux 용 간단한 찾기 및 복사 스크립트

  24. 24

    htaccess를 사용한 간단한 URL 재 작성

  25. 25

    XUnit을 사용하여 간단한 테스트 케이스를 작성하는 방법은 무엇입니까?

  26. 26

    간단한 C ++ 로깅 클래스-ostream 참조 초기화

  27. 27

    업스트림 소스로 다른 프로젝트 (동일한 조직 내)의 아티팩트 피드 사용

  28. 28

    비트를 사용한 조작

  29. 29

    fgetc / fwrite를 사용한 간단한 바이트 변경 실패

뜨겁다태그

보관