C ++: «неполный тип не допускается» при объявлении объекта. В чем причина? - PullRequest
0 голосов
/ 02 сентября 2018

Следующий код был предоставлен мне одним из администраторов JUCE, и на своем Mac он говорит, что он работает, но для меня я получаю «неполный тип не разрешен» в объявлениях объекта в «Private».

Я не могу понять причину ошибки.

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 голосов
/ 02 сентября 2018

Спасибо, ребята. Вы помогли мне разобраться.

«Объект не может содержать себя, это было бы бесконечной рекурсией.»

Как я и сказал, я новичок в этом, так что это не здравый смысл для меня, хотя теперь я понимаю.

Я должен был поставить эту часть:

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

Вне объявления класса в части приложения синтезатора, где другие объекты были определены во время фактической части кодирования синтезатора "MainContentComponent", где происходит волшебство.

Переместил его туда и теперь он работает.

Извините за тупой вопрос. Спасибо за разъяснения.

...