>source

c++ 11에서는 다음과 같이 썼습니다.

JobsList::JobEntry::JobEntry(pid_t pid, pid_t jid, const string &
cmd, bool is_stopped) : pid(pid), jid(jid), cmd(cmd),
                                                                                         is_stopped(is_stopped) {
    time(&
insertion_time);
}

그러나 컴파일러는 나에게 경고를 계속합니다 :

Clang-Tidy: Constructor does not initialize these fields: insertion_time

어떻게이 작업을 제거하고 in_time을 초기화 할 수 있습니까?

내 수업 :

class JobsList
{
public:
    class JobEntry
    {
    public:
        pid_t pid, jid;
        string cmd;
        time_t in_time;
        bool is_stopped;
        JobEntry(pid_t pid, pid_t jid, const string &
cmd, bool is_stopped);
        bool operator<(JobEntry const &amp;
tmp) const {
            return jid < tmp.jid;
        }
        bool operator==(JobEntry const &amp;
tmp) const {
            return jid== tmp.jid;
        }
    };
    //Some other code
};

전체 (그러나 감소 된) c++ 번역 유닛 인 최소한의 재현 가능한 예제를 보여줍니다. 그 전에이 c++ 참조와 좋은 c++ 프로그래밍 책을 읽으십시오.

Basile Starynkevitch2021-05-06 00:56:13

컴파일러가 아니에요, 정전기 분석 도구 인 Clang-Tidy 가이 경고를 제공합니다. 아마도 거짓 긍정적 인 것. 당신은 그것을 억압 할 수 있습니다.

yeputons2021-05-06 00:56:13

@yeputons 초기화 목록에서 시간 기능을 호출 할 수 없습니까?

stacker2021-05-06 00:56:13

@stacker 당신은 할 수 없습니다. 람다 표현을 즉시 호출 한 것으로 일할 수는 있지만 추악한 것처럼 보입니다. 출력 인수를 사용하는 대신 time_t를 반환하는 시간 ()을 만드는 것이 좋습니다.

yeputons2021-05-06 00:56:13
  • 이전 azure : 여러 인스턴스에서 고유 한 로직 앱 식별자
  • 다음 tensorflow : 나는 Tensflow를 설치하고 명령을 사용했지만 다음 오류가 표시됩니다.