問題
テンプレートクラスの練習をしていた際に、コンストラクタに対してLNK2019が発生してビルドが完了しない。
実は、以前にも同ファイルの関数に対して同様のエラーが発生しましたが、その時はプロトタイプ宣言を忘れていただけでした。
今回の場合は、別ファイルの為includeを忘れずに行ったのですが
別クラスの関数に対しても追加でプロトタイプ宣言は必要なのでしょうか?
TestTemplateのコンストラクタをdefault宣言するとエラーが消えたので
そもそも書き方を間違えているのでしょうか。
エラー
LNK2019 未解決の外部シンボル
"public: __cdecl TestTemplate<int>::TestTemplate<int>(int)" (??0?$TestTemplate@H@@QEAA@H@Z)
が関数 main で参照されました
補足
VisualStudio 2019
下記の3ファイルは全て同じ階層に置かれている事を確認しています。
また、ソリューションエクスプローラーにも記載済みでした。
ソースファイルを開けない旨のエラーは今のところ発生していません。
コード
main.cpp
C++
1#include "TestTemplate.h" 2 3int main(){ 4 TestTemplate<int>* intTemp = new TestTemplate<int>(1); 5 return 0; 6}
TestTemplate.h
C++
1#pragma once 2 3template<typename T> 4class TestTemplate{ 5public: 6 TestTemplate(T t); 7};
TestTemplate.cpp
C++
1#include "TestTemplate.h" 2 3template<typename T> 4TestTemplate<T>::TestTemplate(T t) {}
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/02/14 06:29 編集
2023/02/14 06:34
2023/02/14 06:39 編集
2023/02/14 06:40
2023/02/14 06:43