编译错误:`错误:隐式声明`的定义

时间:2017-11-21 11:56:44

标签: c++

我正在尝试创建一个在创建时调用其中一个函数的类,但在编译时遇到以下错误:

JSON.stringify

以下是标题:

g++ -std=c++11 -Wall -Wextra -Werror -pedantic-errors -DNDEBUG -c src/PuzzleSolution.cpp
src/PuzzleSolution.cpp:7:32: error: definition of implicitly-declared 'PuzzleSolution::PuzzleSolution()'
 PuzzleSolution::PuzzleSolution()
                                ^
src/PuzzleSolution.cpp:12:6: error: prototype for 'void PuzzleSolution::addRow()' does not match any in class 'PuzzleSolution'
 void PuzzleSolution::addRow()
      ^
src/PuzzleSolution.h:19:10: error: candidate is: void PuzzleSolution::addRow(std::vector<unsigned int>&)
     explicit PuzzleSolution();
          ^
src/PuzzleSolution.cpp:17:48: error: no 'void PuzzleSolution::addElement(unsigned int)' member function declared in class 'PuzzleSolution'
 void PuzzleSolution::addElement(unsigned int id)
                                                ^
make: *** [PuzzleSolution.o] Error 1

这是cpp文件:

#include <vector>

using namespace std;

class PuzzleSolution {
private:
    vector<vector<unsigned int>> sol;

public:
    explicit PuzzleSolution();

    void addRow();
};

我做错了什么?

2 个答案:

答案 0 :(得分:0)

代码原样没有错误。它汇编了GCC 4.8.2

确保您的头文件确实与您链接的内容相同。最有可能包含的标题与您在此处发布的标题不同。

附注:通常,将using namespace std;放在头文件中是一种不好的做法。

答案 1 :(得分:0)

发现问题:

src文件夹中有一个名为PuzzleSolution.h.gch

的文件

@Quatin和@StoryTeller帮助我理解这是一个预编译的头文件,编译器继续使用它。

删除后,项目编译并执行