0

私は C++ の初心者で、自分のコードをコンパイルしようとしています。私が使用しているコマンドはg++ -o main --std=c++11 main.cpp channel.cpp. ただし、次のエラー メッセージが表示されます。

/tmp/ccLuJs81.o: In function `main':
main.cpp:(.text+0x26): undefined reference to `gsc::Channel<int>::Channel()'
main.cpp:(.text+0x3a): undefined reference to `gsc::Channel<int>::put(int)'
main.cpp:(.text+0x4e): undefined reference to `gsc::Channel<int>::get(bool)'
collect2: error: ld returned 1 exit status

ここで何が起こっているか知っている人はいますか?どうもありがとう!

4

1 に答える 1

6

ヘッダーでテンプレートを宣言し、C++ ファイルで定義したようです。これはうまくいきません。テンプレートをヘッダーで定義しない場合は、C++ ファイルで明示的にインスタンス化する必要があります。

template class gcs::Channel<int>;

すべてのメソッドの定義の後。

于 2013-11-11T01:04:58.130 に答える