我有以下 C++ 代码,它给了我以下错误:
#include <iostream>
using namespace std;
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}
我在这里想念什么?
我有以下 C++ 代码,它给了我以下错误:
#include <iostream>
using namespace std;
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}
我在这里想念什么?
您试图在声明或定义标识符之前使用它。
在使用之前定义它会起作用:
#include <iostream>
using namespace std;
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
或者,您可以通过将以下代码放在前面来声明 (并将其余代码保持原样):MyPrinter
main
template <class T>
void MyPrinter(T arr);
模板定义应放在第一次使用之前。您需要将模板定义放在上面main
:
#include <iostream>
using namespace std;
//Template Definition here
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
另一种方法是使用前向声明:
#include <iostream>
using namespace std;
//Forward Declaration
template <class T> void MyPrinter(T arr);
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}
MyPrinter
在您使用它时不可见,因为它是在源代码中声明和定义的。MyPrinter
您可以通过移动before的定义来使其工作main
:
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
或通过向前声明MyPrinter
:
template <class T>
void MyPrinter(T arr);
int main()
{
MyPrinter(100);
MyPrinter(100.90);
getchar();
return 0;
}
template <class T>
void MyPrinter(T arr)
{
cout<<"Value is: " + arr;
}