[英]Forward declaration of two dependend classes with friend function
我有兩節課。 一個依賴於另一個類,另一個包含第一個類的友元函數。 這個類還有很多其他的東西,但這就是它歸結為:
class LightBase;
class Color
{
friend void LightBase::UpdateColor();
};
class LightBase
{
public:
void UpdateColor();
protected:
std::vector<Color> colors_;
};
但顯然我的預先聲明是不正確的。 我明白了:
error: invalid use of incomplete type 'class LightBase'
我知道UpdateColor()
在做出朋友聲明時是未知的。 但是我該如何解決呢?
如果您稍微更改一下安排,它將正常工作:
class Color;
class LightBase {
public:
void UpdateColor();
protected:
// Color has been declared
std::vector<Color> colors_;
};
class Color {
// LightBase has been defined
friend void LightBase::UpdateColor();
};
至於LightBase::UpdateColor
的使用,我們需要定義LightBase
類來使用它的函數成員LightBase
,因為直到那時才知道,正如你自己指出的那樣。
同時,我們可以有一個std::vector<Color>
與Color
沒有被定義的是,只有在范圍內聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.