当编译如下:默认赋值运算符参数
template <class T>
class Number
{
private:
T num;
public:
Number() {}
Number(T n) : num(n) {}
operator T() const { return num; }
};
int main()
{
Number<int> n=5;
Number<char> c=4;
int i;
c=int(5);
i=n;
c=n;
return 0;
}
编译器卡在第三次分配说没有匹配在c=n
operator=
。 n
不应该转换为int
,而这又将被分配到c
?
'模板类被构造为一个char' - 我有很大的问题试图找出你的意思。一个被构造的类作为a_'char'? – sehe 2012-04-02 11:40:48
'n'被构造为一个'int'。它有一个'int'运算符。 'c'可以被分配'int's。顺便说一句,它不会以另一种方式工作,所以问题不在于将'int'赋值给'char'。 – baruch 2012-04-02 11:42:49
你能澄清一下吗?我不明白问题是什么。 – baruch 2012-04-02 11:45:23