2016-06-04 3 views
1

나는 Protocal.h 파일에 클래스를 씁니다. 내가 프로젝트를 빌드 할 때qt 오류 :`Protocol :: Protocol() '의 다중 정의

#ifndef PROTOCOL_H 
#define PROTOCOL_H 

class Protocol{ 
public: 
    Protocol(); 

    void analyse(); 
}; 

Protocol::Protocol() {} 

void Protocol::analyse() { 
} 

#endif // PROTOCOL_H 

이 sinffer.h 파일에, 나는이 헤더 파일 enter image description here

를 사용하여 몇 가지 오류가있다, 내가하지 왜. error message image

내 .PRO 파일이 enter image description here

에서 한 번만 protocol.h 파일을 작성합니다.

+1

Wri cpp 파일의 생성자와 소멸자를 포함하는 멤버 함수의 모든 정의를 정의하거나 클래스에서 정의합니다. 헤더 파일 (클래스 외부)에 정의하지 마십시오. –

+0

@Artur Pyszczuk 예, 지금 시도해보십시오. 헤더 파일에 멤버 함수를 정의하고 cpp 파일에 함수 본문을 작성하십시오. 그러면 대단히 감사합니다. – jecyhw

+0

여기에 작은 선택기가 있지만 "프로토콜"에 "프로토콜"을 수정하십시오. :) – Bugfinger

답변

4

당신은 다음과 같은 방법으로 사용하여 프로토콜 생성자의 몸을 정의 할 수 있습니다 : 클래스 정의에서

을 (암시 적 인라인)

// protocol.h  
class Protocol { 
public: 
    Protocol() { 
     // in the class definition 
    } 
    ... 
}; 

명시 인라인 CPP 파일

에 넣어
// protocol.h  
class Protocol { 
public: 
    Protocol(); 
    ... 
}; 
// 
inline Protocol::Protocol() { 
// inline prevents double definition error when you include protocol.h 
} 

// protocol.h  
class Protocol { 
public: 
    Protocol(); 
    ... 
}; 
// protocol.cpp 
#include "protocol.h" 
Protocol::Protocol() { 
} 

+0

대단히 감사합니다. 귀하의 코드를 통해 이해합니다. – jecyhw

관련 문제