簡體   English   中英

帶有友元函數的兩個依賴類的前向聲明

[英]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.

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