當編譯如下:默認賦值運算符參數
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