2017-11-21 19 views
0

私が作成したときに、それの関数のいずれかを呼び出すクラスを作成しようとしていますが、コンパイル時に、私は次のエラーを取得しています:コンパイルエラー: `エラー:暗黙的-declared`の定義

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 

がここにありますヘッダ:

#include "PuzzleSolution.h" 

PuzzleSolution::PuzzleSolution() 
{ 
    addRow(); 
} 

void PuzzleSolution::addRow() 
{ 
    this->sol.emplace_back(); 
} 

私が間違って何をやっている:

#include <vector> 

using namespace std; 

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

public: 
    explicit PuzzleSolution(); 

    void addRow(); 
}; 

ここでは、cppのファイルですか?

+1

いいえ、わかりません。 [あなたのコードはGCC 7.2でビルドされています](http://coliru.stacked-crooked.com/a/c0b3282021c70176) – StoryTeller

+0

g ++を使用しています - 4.8.2と思います。私はビルドして特定のマシン上で動作させる必要があります@StoryTeller –

+2

あなたは 'PuzzleSolution'を定義する別のヘッダでコンパイルしているようです。エラーはあなたがここで与えたヘッダーで意味をなさない。 – Quentin

答えて

0

@Quatinと@StoryTeller PuzzleSolution.h.gch

呼ばsrcフォルダ内のファイルがありましたが、これはコンパイラが使用して保たれ、プリコンパイルヘッダ、であることを理解するために私を助けました。

一度削除すると、プロジェクトがコンパイルされて実行されます

0

コードに誤りはありません。これはGCC 4.8.2でコンパイルされます

実際にあなたのヘッダーファイルがリンクされていることを確認してください。ほとんどの場合、ヘッダーは実際にここに投稿したヘッダーとは異なります。

サイドノート:一般に、using namespace std;をヘッダファイルに入れることは悪い習慣と考えられます。問題を発見

+0

明らかに問題がある、またはOPが投稿されていない。だから、「エラーはありません」と言っているのは、解説資料ではなく、解答資料です。 – StoryTeller

+0

こんにちは、ありがとう、私は問題を見つけて、答えを投稿 –

関連する問題