2010-11-26 8 views
0

をGET&SET私はC++のヘッダファイル内get()を実装しようとしています:たとえばC++ ::ヘッダファイルに

:これはファイルです:test.hpp

class A { 
public: 
A(std::string f, int id):file(f), index(id){}; 

std::string getFile(){return file;}; 
int getIndex(){return id;}; 

private: 
    std::string file; 
    int index; 
}; 
} 

しかし、

未定義の「vtable A」への参照。

どうすればいいですか?

+1

を使用している正確なコードを投稿してください。上記のコードは(冗長な閉じ括弧を除いて)うまくいくはずです。あなたが見ているエラーはあなたには間違いありません。 –

+3

彼のクラスに_index_というメンバが含まれている場合、彼は_id_を返すことを除いて、まあです。 – Chowlett

答えて

3
int getIndex(){return id;}; 

は、 'ID' という名前のメンバーがありませんので、この行は

int getIndex(){return index;}; 

が次にあなたはあまりclosenブレースを持っていなければなりません。中括弧の後にセミコロンを入れる必要はありません。さらに、オブジェクトを変更しないクラスメンバは常にconstとして宣言する必要があります。変更を行う必要があるものとしたくないものについて一貫した概念を維持するのに非常に役立ちます。

これは、それが最終的にどのように見えるかです:

#include <string> 

class A { 
public: 
A(std::string f, int id):file(f), index(id){} 

std::string getFile() const {return file;} 
int getIndex() const {return index;} 

private: 
    std::string file; 
    int index; 
}; 
+3

これはコンパイラが欠損しているvtableに関するエラーをどのように出力するかについては答えていませんが、元のコードにはこれを生成できるものはありません。 – Mephane

+2

とconstを追加することを忘れないでください – CashCow

+0

あなたは正しいです、getFileとgetIndexはconstでなければなりません。 – Mephane

関連する問題