2012-02-12 17 views
-1
enter code here 

私のプログラミングにはdev C++を使用しています。私はdev Cで開発されたライブラリを使用している+ +私は同じコンパイラを使用したいです。"リンカエラー"を解決するための任意のアイデアundefiendリファレンス

私自身の開発プロジェクトでは、いくつかの新しいクラスが欲しかったです。だから私は2つのクラス"TriangleLists, TriangleList"(hファイルとcppファイル)をライブラリに追加しました。ライブラリをコンパイルしたときにエラーがなくなり、新しいライブラリファイルを作成することができました。しかし、自分のプロジェクトをコンパイルしているときに、リンカのエラーが発生しました。

[Linker error] undefined reference to `TriangleLists::Erase()' 
[Linker error] undefined reference to `TriangleList::TriangleList(TriangleList const&)' 
[Linker error] undefined reference to `TriangleList::operator=(TriangleList const&)' 
ld returned 1 exit status 

実際、ライブラリにRectangleList, RectangleListsと呼ばれる同様のクラスはそう、私はこれらの2つのクラスをコピーして、私のクラスTriangleListに合うように変更...がありました。

これを解決するための提案をお願いします。ありがとうございます。

+1

これらの実装を含むソースファイルをビルドに追加しましたか? –

+0

どのC++ブックをお使いですか? –

+0

この質問は非常に答えにくいです。あなたは何が起こったのかを記述しましたが、あなたがしたことは何も記述していません。あなたがしたことを示してください。 –

答えて

0

あなたが作成したクラスTriangleListsは、図書館に所属していますか?

多くの場合、クラスオブジェクトはコピーされることはなく、まったく実行できません。ライブラリユーザがコピー不可能なオブジェクトをコピーするのを防ぐために、クリエータはコピーコンストラクタと代入演算子(通常はプライベート)を宣言しますが、その定義は省略します。これが当てはまる場合は、オブジェクトをコピーしないでください(一部のstdコンテナに入れるなど)。 mayヒープ上にオブジェクトを作成し、そのオブジェクトへのポインタをコンテナに配置します。

編集:これらがあなたのクラスの場合、答えは簡単です。関数EraseをクラスTriangleListsに追加し、コピーコンストラクタと代入演算子をクラスTriangleListに追加します。類似のクラスRectangleListの機能をコピーすると、そのコピーコンストラクタと代入演算子RectangleList::RectangleList(RectangleList const&)RectangleList::operator=(RectangleList const&)が検索されます。

+0

私は確信していません、私はあなたのC++の基礎が非常に低いので、あなたを正しく信じていません。 (とにかく、はいTriangleListsとTriangleListは、私がlibに追加した新しいクラスです)実際には、ライブラリには、RectangleList、RectangleListsと呼ばれる同様のクラスがありました。だから、私はそれを同じ方法で行い、尊重して関数を修正しましたTriangleListクラスへ...単純なやり方を言うなら、本当に役に立ちます。ありがとう、 – gnp

+0

OK、私は答えを編集しました。 – Dialecticus

関連する問題