Я работаю с C ++ в JUCE, но это общий вопрос C ++ для начинающих.
У меня есть этот класс:
class LabeledGroup : public GroupComponent
{
public:
LabeledGroup(const String& name)
{
setText(name);
setTextLabelPosition(Justification::centredTop);
addAndMakeVisible(dummy1);
addAndMakeVisible(dummy2);
addAndMakeVisible(dummy3);
addAndMakeVisible(dummy4);
}
}
void resized() override
{
FlexBox knobBox1;
knobBox1.flexWrap = FlexBox::Wrap::wrap;
knobBox1.justifyContent = FlexBox::JustifyContent::flexStart;
knobBox1.alignContent = FlexBox::AlignContent::flexStart;
Array<LabeledSlider*> knobs1;
knobs1.add(&dummy1, &dummy2, &dummy3, &dummy4);
for (auto *k : knobs1)
knobBox1.items.add(FlexItem(*k).withMinHeight(80.0f).withMinWidth(80.0f).withFlex(1));
FlexBox fb1;
fb1.flexDirection = FlexBox::Direction::column;
fb1.items.add(FlexItem(knobBox1).withFlex(2.5));
fb1.performLayout(getLocalBounds().toFloat());
}
private:
LabeledSlider dummy1{ "Dummy 1" };
LabeledSlider dummy2{ "Dummy 2" };
LabeledSlider dummy3{ "Dummy 3" };
LabeledSlider dummy4{ "Dummy 4" };
};
, который работает для создания 4 фиктивных объектов "LabeledSlider"внутри него делает их видимыми и использует функцию FlexBox для их организации.
Когда я вызываю этот класс в моем «MainContentComponent» (именно там моя программа визуально встроена в JUCE), вот так, он работает нормально:
class MainContentComponent : public Component
{
public:
MainContentComponent()
{
addAndMakeVisible(group1);
}
private:
LabeledGroup group1{ "Group 1" };
Проблема, конечно, в том, что я создал и назвал все свои "фиктивные ручки" непосредственно внутри класса LabeledGroup
, и вместо этого мне нужно установить их по-разному для каждого объекта этого класса.
т.е.Мне нужно указать только в MainContentComponent
, что:
LabeledGroup group1{ "Group 1" }
содержит «dummy1, dummy2, dummy3, dummy4» * LabeledGroup group2{ "Group 2" }
содержит «dummy5, dummy6, dummy7».
Какой хороший или правильный способ сделать это?