std::shared_ptr der abstrakten Klasse abgeleitete Klasse instanziieren

Ich versuche, mit std::shared_ptr, aber ich bin nicht sicher, ob ich benutzen kann shared_ptr für eine abstrakte Klasse, und rufen Sie eine abgeleitete Klasse von dieser smart-pointer. Hier ist der code, den ich derzeit

IExecute *ppCIExecuteExecuteOperation = NULL;

for(int i = 0; i < 3; ++i)
{
    switch (stOperationType.key)
    {
        case E_OPERATIONKEY::DrawCircle:
        pCIExecuteExecuteOperation = new CCircle();
        break;
        case E_OPERATIONKEY::DrawSquare:
        pCIExecuteExecuteOperation = new CSquare();
        break;
        case E_OPERATIONKEY::Rhombus:
        pCIExecuteExecuteOperation = new CRehombus();
        break;
        default:
        break;
    }
} 
pCIExecuteExecuteOperation->Draw();

Hier IExecute ist eine abstrakte Klasse und CCircle, CSquare, CRhombus ist eine abgeleitete Klasse von IExecute.

Alles was ich will zu tun ist, verwenden Sie shared_ptr<IEXectue>pCIExecuteExecuteOperation(nullptr)
und innerhalb einer switch-Anweisung machen Sie zu einer der abgeleiteten Klasse, Wie kann ich das erreichen?

Bearbeiten:
Die Antworten waren zu verwenden make_shared oder reset()

Danke Jungs, ich dint erwarten, dass es so einfach sein.

  • Haben Sie tatsächlich versucht, es zu tun?
  • Die offensichtliche Art und Weise funktionieren sollte.
  • ich bin neu in c++ shared_ptr, lief über paar Seiten und war verwirrt
InformationsquelleAutor Barry | 2014-08-20
Schreibe einen Kommentar