我試圖創建一個重載的一元 - 操作符,但無法獲得編譯的代碼。代碼的簡化版本如下: -C++一元 - 操作符重載不會編譯
class frag
{
public:
frag myfunc (frag oper1,
frag oper2);
frag myfunc2 (frag oper1,
frag oper2);
friend frag operator + (frag &oper1,
frag &oper2);
frag operator -()
{
frag f;
f.element = -element;
return f;
}
private:
int element;
};
frag myfunc (frag oper1, frag oper2)
{
return oper1 + -oper2;
}
frag myfunc2 (frag oper1, frag oper2)
{
return oper1 + oper2;
}
frag operator+ (frag &oper1, frag &oper2)
{
frag innerfrag;
innerfrag.element = oper1.element + oper2.element;
return innerfrag;
}
編譯報道...
/home/brian/Desktop/frag.hpp: In function ‘frag myfunc(frag, frag)’:
/home/brian/Desktop/frag.hpp:41: error: no match for ‘operator+’ in ‘oper1 + oper2.frag::operator-()’
/home/brian/Desktop/frag.hpp:16: note: candidates are: frag operator+(frag&, frag&)
任何人都可以提出什麼,我需要在這裏做什麼?
這是VC++ 2008中的一個缺陷,現在更正爲VC++ 2010。 – 2011-06-10 19:16:10