2017-01-09 5 views
0

異なるファイルタイプに対してさまざまな方法で実装されるインターフェイスベースのファイルローダーを作成しようとしています。私は自分の心に来たか、スタック/インターネットで見つかったすべての組み合わせを試しましたが、私はエラーを受け取り続けています。私は間違って何をしていますか?エラー:C++でインターフェイスパターンを実装する際に、typeinfoへの参照が未定義

コア/ loader.h:

#ifndef CORE_LOADER_H 
#define CORE_LOADER_H 

class LoaderInterface 
{ 
    public: 
     virtual bool reloadFile(); 
}; 

#endif // CORE_LOADER_H 

コア/ lodaer/own.h:

#ifndef CORE_LOADER_OWN_H 
#define CORE_LOADER_OWN_H 

#include "src/core/loader.h" 

class Own : public LoaderInterface 
{ 
    public: 
     bool reloadFile(); 
}; 

#endif // CORE_LOADER_OWN_H 

コア/ローダ/ own.cpp:

#include "src/core/loader/own.h" 

bool Own::reloadFile(){ 
    return true; 
} 

リンカは述べています:

(..)/qt/build-Foo-Desktop_Qt_5_7_0_GCC_64bit-Debug/own.o:-1: error: undefined reference to `typeinfo for LoaderInterface' 
+2

それは名前空間とは何の関係もありません。またはQt。両方を削除しても、同じエラーが表示されます。 – juanchopanza

+0

@juanchopanzaより適切なタイトルを自由に提案してください。 – Luke

+2

「エラー:不完全な型の無効な使用」についてはどうですか?それはGoogleに簡単になります。 – juanchopanza

答えて

1

あなたはインターフェイスクラスに純粋仮想関数を使用する必要があります。

class LoaderInterface 
{ 
    public: 
     virtual bool reloadFile() = 0; 
}; 
+0

この回答を下落させた人には、どうしてそれをしたのか説明してください。それは動作し、私の問題の解決策のように私に見える。それも説明されていればそれはいいだろう。 – Luke

+2

@ルークもしあなたが '= 0'をインクルードせず、' LoaderInterface :: reloadFile'のための定義を含んでいなければ、エラーメッセージはあなたの質問にはなかったはずです。 –

+0

さて、なぜそれが起こっているのかは分かりませんが、私はインターネット上で完全な説明を探します。助けてくれてありがとう – Luke

関連する問題