ich MIDITest
meiner Klasse haben, die eine Membervariable Objekt bekam IPianoRoll
genannt:Wie initiiere ich ein Objekt in einem CTOR nach einigen anderen Aufgaben?
class MIDITest : public IPlug
{
private:
IPianoRoll mPianoRoll;
public:
MIDITest(IPlugInstanceInfo instanceInfo);
~MIDITest();
};
ich meine benutzerdefinierte CTOR von mPianoRoll
aufrufen müssen:
IPianoRoll(IPlugBase *pPlug, int x, int y, int paramIdx) : IControl(pPlug, IRECT(x, y, x + kWidth, y + kHeight), paramIdx, IChannelBlend::kBlendColorDodge) {
}
erst nach einer anderen Aufgabe innerhalb MIDITest
, wie wie:
MIDITest::MIDITest(IPlugInstanceInfo instanceInfo) : IPLUG_CTOR(kNumParams, kNumPresets, instanceInfo) {
// SOME TASKS
IGraphics *pGraphics = MakeGraphics(this, GUI_WIDTH, GUI_HEIGHT, PLUG_FPS);
pGraphics->HandleMouseOver(true);
AttachGraphics(pGraphics);
// NOW I NEED TO "create it"
mPianoRoll(this, 8, 8, kParamIDPianoRoll);
}
aber natürlich kann ich nicht tun mPianoRoll(this, 8, 8, kParamIDPianoRoll);
.
Ich würde Zeiger für diese zu vermeiden, da beim "Löschen" ich seltsame Fehler bekam, und weil (da ich keine Zeiger brauche), denke ich, es ist besser, sie nicht zu verwenden und dynamische Speicherzuweisung.
Ich kann Member Init Liste nicht verwenden, da es vor dem Task innerhalb der MIDITest
CTOR aufgerufen/verwendet wird.
Wie ist der Weg?
Der Code, den du zeigst, ist eigentlich nichts, von dem die Konstruktion von 'mPianoRoll' abhängt, soweit ich das sehen kann. Vielleicht "kParamIDPianoRoll" was auch immer das ist? –
Ich verstehe es nicht. [MCV] (http://stackoverflow.com/help/mcve) bitte? –