非类型模板参数必须是C中的标量类型错误?

这个:

Nontype template argument must be of scalar type

是我尝试使用Turbo C 4.5构建此程序时出现的错误.我有一些错误,如:

non-type template argument refers to function that does not have linkage

但这个错误对我来说是全新的.代码有什么问题?

#include<iostream.h>
template<class T1=int,class T2=int>
class tempex
{
T1 a;
T2 b;
public:
    tempex(T1 x,T2 y)
    {
        a=x;
        b=y;
    }
    void show()
    {
        cout<<"A= \t"<<a<<"\tB=\t"<<b;
    }
};

int main()
{
    tempex <float,int> te1(1.23,123);
    te1.show();
    return 0;
}
最佳答案
你似乎在使用一个古老的编译器.尝试使用现代免费版本之一,例如VC 2013 Express Edition.您将收到更合适的错误消息:

fatal error C1083: Cannot open include file: 'iostream.h' :
    No such file or directory

通过更改< iostream.h>来解决此问题.到< iostream>,你会得到:

error C2065: 'cout' : undeclared identifier

如果你修复了这个问题,通过将cout更改为std :: cout,代码将仅使用一个警告进行编译:

warning C4305: 'argument' : truncation from 'double' to 'float'

通过将1.23更改为1.23f来解决此问题.

开始了.一个完整的现代C程序.

转载注明原文:非类型模板参数必须是C中的标量类型错误? - 代码日志