簡體   English   中英

Typecast運算符重載問題

[英]Typecast operator overloading problem

例如,我有兩個類A和B,這樣對於兩個對象a和b,我希望能夠做到:
A a;
B b;
a = b;
b = a;

為此,我已經重載了=運算符和typecast運算符為:

class A{
-snip-
    operator B()const { return B(pVarA); }
};
class B{
-snip-
    operator A()const { return A(pVarB); }
};

但是當我嘗試編譯這段代碼時,gcc拋出錯誤:
error: expected type-specifier before 'B'
對於該行: operator B()const { return B(pVarA);}

我的猜測是,這是由於雞肉和雞蛋的問題,因為B類是在A類之后定義的。

有沒有辦法在仍然使用重載的類型轉換運算符的情況下規避此問題。 如果沒有,那么實現我的目標的最佳方法是什么。

任何幫助將不勝感激。 提前致謝。

嘗試向前聲明,然后在以后提供實際的函數定義:

class B;

class A{
-snip-
    operator B()const;
};
class B{
-snip-
    operator A()const;
};

inline A::operator B() const
{
    return B(pVarA);
}

inline B::operator A() const
{
    return A(pVarB);
}

這應該工作:

class B;

class A{
    operator B()const;
};

class B{
    operator A()const { return A(pVarB); }
};

A::operator B() const { return B(pVarA); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM