4
我有以下代碼:集裝箱
#include <vector>
template<int Wt = 0>
class fixed {
public:
explicit fixed(double val = 0) {
operator=(val);
}
~fixed(){}
operator double() const {
return v_;
}
double operator =(const double &d){
if (d>Wt)
v_ = Wt;
else
v_ = d;
return v_;
}
private:
double v_;
};
int main(){
fixed<5> x;
std::vector<fixed<6> > v(5);
//std::vector<fixed<6> > v(5,0);
//fixed<6> y;
//v[0] = 0;
x = x*v[0];
}
在VS編譯2005年快遞和2010年快遞提供了以下錯誤:
error C2676: binary '*' : 'fixed' does not define this operator or a conversion to a type acceptable to the predefined operator
如果我取消任何主要三行(註釋額外的向量),它會編譯。如果我使用gcc,它會編譯。任何人都可以給出一個暗示爲什麼這是什麼?
該代碼是一個大型項目的簡化版本,所以這三種解決方案不幸都不適合我。
環境我試過的是使用gcc的Qt,但是猜測它沒有相同的頭文件。我已經報告了該錯誤: https://connect.microsoft.com/VisualStudio/feedback/details/637760/container-of-template-class-with-automatic-conversion-problem – 2011-01-24 07:49:19