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

时间:2018-09-02 04:31:54

标签: c++ forward-declaration juce

以下代码是由一位JUCE管理员提供的,在他的Mac上,他说它正在运行,但是对我来说,“私有”中的对象声明中“不允许输入不完整的类型”。 / p>

我无法理解错误原因。

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错误的屏幕截图

我的Visual Studio Community 2017完全是最新的,因此我不确定为什么它适用于他而不是我。

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

如果您知道此修复程序是特定的,或者真的很清楚您的意思,请

1 个答案:

答案 0 :(得分:2)

谢谢大家。你帮我弄清楚了。

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

就像我说的那样,我是新手,所以虽然现在我懂了,但这对我来说并不常见。

本来应该放这部分的:

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

在synth应用程序中在其他地方在合成器的实际编码部分“ MainContentComponent”中定义了其他对象的地方声明的类声明之外。

将其移到那里,现在可以使用。

对不起,很抱歉。感谢您的澄清。