qt错误:`Protocol :: Protocol()'的多重定义

时间:2016-06-04 07:46:29

标签: c++ qt

我在Protocal.h文件中编写了一个类。

#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 个答案:

答案 0 :(得分:4)

您可以使用以下方式定义Protocol构造函数的主体:

在类定义(隐式内联)

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

显式内联

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

放入cpp文件

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