這裏是上在Windows 7最新的QT IDE(boost.1.48)升壓shared_ptr的似乎不支持運營商==
class Employee {
public:
int Id;
...
bool operator==(const Employee& other) {
qDebug() << this->Id << ":" << "compare with " << other.Id;
return this->Id==other.Id;
}
}
測試代碼運行:
Employee jack1;
jack1 == jack1; // the operator== gets invoked.
shared_ptr<Employee> jack(new Employee);
jack == jack; // the operator== doesn't get invoked.
的相關在升壓頭文件中的代碼是:
template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
{
return a.get() == b.get();
}
它似乎是在做指針比較,而不是做什麼,我希望它。
我該怎麼做?
另外。考慮使'operator =='爲'const'成員函數;更好的是考慮使'operator =='成爲一個帶有兩個'const'引用的自由函數。 – 2011-12-28 22:06:50