函数___tmainCRTStartup中引用了未解析的外部符号_main

Rhe*_*xis 1 c++ templates namespaces visual-c++

我收到此错误:当我尝试编译我的c ++控制台应用程序时,' 函数_ _tmainCRTStartup '中未解析的外部符号main.我做了一些搜索,我发现只是将我的'链接器'从窗口改为控制台,反之亦然.这没用,我甚至尝试创建一个新的控制台应用程序.

我不确定导致这种情况的原因,是否可能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;
}
Run Code Online (Sandbox Code Playgroud)

的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;
}
};
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 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 );
}
Run Code Online (Sandbox Code Playgroud)