這裏是我的問題代碼:C++重載虛擬=操作
class ICommon
{
public:
virtual ICommon& operator=(const ICommon & p)const=0;
};
class CSpecial : public ICommon
{
public:
CSpecial& operator=(const CSpecial & cs)const
{
//custom operations
return *this;
}
};
CSpecial obj;
基本上是:我希望接口ICommon迫使它的後代實現=操作,但不希望在執行任何類型轉換。編譯器說,「不能實例化一個抽象類。
任何幫助/建議將不勝感激。
你想實現什麼?你想讓所有的擴展類在最派生的層次上使用自己的類型來實現'operator =',或者你想實現一個可以通過引用使用的多態'operator =' /指向基礎接口? – 2010-05-19 07:51:58
與David一樣,我不確定你想達到什麼目的。希望確保派生類編寫器生成自己的複製賦值運算符(從而防止編譯器生成隱式賦值運算符),編寫抽象虛擬運算符將不起作用,因爲即使編寫者在派生類中實現了這一點(必須使用ICommon& operator =(const ICommon&)),編譯器仍然會隱式生成ISpecial&operator =(ISpecial&)。 – 2010-05-19 08:08:30