1

このエラーが発生しました:' c ++コンソールアプリケーションをコンパイルしようとすると、'関数__tmainCRTStartupで参照されている未解決の外部シンボルメイン'。私はいくつかの検索を行いましたが、見つけたのは「リンカー」をウィンドウからコンソールに、またはその逆に変更することだけでした。これは機能しませんでした。新しいコンソールアプリケーションを作成してみました。

template <typename T>これを引き起こしている原因がわかりませんが、両方のファイルに表示される混乱を引き起こしている可能性はありますか?ここでの助けをいただければ幸いです。

以下のコード:

Main.cpp:

#include <iostream>
#include "tools.h"
using namespace tools;

template <typename T>
int main()
{
T input1;
T input2;

std::cout << "Enter in 1st number: " << endl;
std::cin >> input1;
std::cout << "Enter in 2nd number: " << endl;
std::cin >> input2;
std::cout << "num1 - num2 = [" << numberDifference(input1, input2) << "]" << endl;
getchar();
getchar();

return 0;
}

Tools.h:

#include <iostream>
namespace tools
{
template <typename T>
T numberDifference(T num1, T num2)
{
    if(num1 > num2)
        return num1 - num2;
    else
        return num2 - num1;
}
};
4

2 に答える 2

5

template関数の定義を削除しますmain

または、少なくとも適切なmain関数から呼び出します。

例えば

template< typename T >
int templated_main( int c, char** argv )
{
    // What was in your original main function....

}

int main( int c, char** argv )
{
    return templated_main<int>( c, argv );
}
于 2012-05-17T11:41:08.340 に答える
2

template <typename T>メインの前を削除します。これmainでテンプレート関数が作成されます。

そして、またはT input1; T input2;のような特定のタイプに変更します。intfloat

于 2012-05-17T11:42:36.027 に答える