C ++:声明对象时“不允许使用不完整类型” - 原因是什么?

问题描述 投票:1回答:1

以下代码是由一名JUCE管理员提供给我的,并且在他的Mac上他说它正在工作,但对我来说,我在“私人”中的对象声明中得到“不允许的类型”。

我无法理解错误的原因。

class LabeledSlider : public GroupComponent

{
    public:
    LabeledSlider (const String& name)
    {
        setText (name);
        setTextLabelPosition (Justification::centredTop);
        addAndMakeVisible (slider);
    }

    void resized() override
    {
        slider.setBounds (getLocalBounds().reduced (10));
    }

    Slider slider 
    { 
        Slider::RotaryHorizontalVerticalDrag, Slider::TextBoxBelow 
    };

 private:
    LabeledSlider frequency { "Frequency" };
    LabeledSlider level { "Level" };

};

Visual Studio错误的Screencap

我的Visual Studio社区2017是完全最新的,所以我不确定它为什么适合他,而不是我。

这会是什么问题?我如何解决它?

如果您知道修复具体或非常清楚您的意思,请

c++ forward-declaration juce
1个回答
2
投票

多谢你们。你帮我搞清楚了。

“一个对象不能包含自身,这将是无限递归。”

就像我说的那样,我对这些东西不熟悉所以这对我来说不是常识,尽管现在我明白了。

我本来应该把这部分:

 private:
    LabeledSlider frequency { "Frequency" };
    LabeledSlider level { "Level" };

在合成器应用程序部分的类声明之外,其他对象是在合成器的实际编码部分“MainContentComponent”中定义的,其中魔术发生。

把它移到那里它现在有效。

抱歉愚蠢的问题。谢谢你的澄清。

© www.soinside.com 2019 - 2024. All rights reserved.