没有在类中声明的成员函数 - 基本编译时出错

时间:2013-02-21 03:15:59

标签: c++ header compiler-errors

编译基本类和标题时出现此错误。不确定我是否遗漏了明显的东西?如果需要,可以提供任何其他细节。

注意:我在Event.h中添加了#include <string>,错误仍然存​​在。

Event.cpp

#include "Event.h"
#include <string>

std::string Event::getLabel() {
    return label;
}

Event.h

#ifndef EVENT_H
#define EVENT_H

#define EVENT_STOP 0
#define EVENT_START 1


class Event {
private:

protected:
    double time;
    std::string label;
    int type; // EVENT_START OR EVENT_STOP

public:
    std::string getLabel(); 

};

#endif

编译和错误

g++ -c -Wall -pedantic correngine.cpp
g++ -c -Wall -pedantic CSVManager.cpp
g++ -c -Wall -pedantic ServerEvent.cpp 
g++    -c -o UPSEvent.o UPSEvent.cpp
g++ -c -Wall -pedantic CorrelationEngineManager.cpp
g++ -c -Wall -pedantic Event.cpp
Event.cpp:4: error: no ‘std::string Event::getLabel()’ member function declared in class ‘Event’
make: *** [Event.o] Error 1

2 个答案:

答案 0 :(得分:9)

我遇到了类似的问题,并通过删除标题旁边生成的[标题名称] .gch文件解决了这个问题,并且显然已经损坏了。也许你可以尝试一下?

答案 1 :(得分:4)

您需要在Event.h中包含std::string标头

#ifndef EVENT_H
#define EVENT_H

#include <string>        //<<----  here

#define EVENT_STOP 0
#define EVENT_START 1


class Event {
private:

protected:
    double time;
    std::string label;
    int type; // EVENT_START OR EVENT_STOP

public:
    std::string getLabel(); 

};

#endif