2017-01-26 3 views
0

Der Punkt ist initialisieren Sie einen Zeiger auf ein Mystic-Objekt mit dem Wert "Piepton" eine Idee?Wie kann ich ein Objekt initialisieren

class Mystic { 
private: 
string label; 
Mystic(string & newlbl) { setLabel (newlbl)}; 
public: 
void setLabel(string newlbl){label = newlbl;} 
Mystic() : label(){}; 
}; 
int main(int argc, char *argv[]) 
{ 
... //i tried this 
     //string *p1 = new string("beep"); 
     //Mystic myst(p1); 
} 
+0

initialisieren Seit dieser Frage über verwirrende Zeiger und Referenzen, und zeigt einige Anti-Muster, könnte es am besten mit einem guten C++ Buch beantwortet werden. Vielleicht sollten Sie sich die [C++ empfohlene Buchliste] ansehen (http://stackoverflow.com/questions/388242/). – jaggedSpire

Antwort

1

Der Konstruktor, der eine Zeichenfolge verwendet, ist nicht öffentlich, daher können Sie ihn nicht verwenden. Verwenden Sie stattdessen den Standardkonstruktor und dann die setLabel-Methode.

int main(int argc, char** argv) { 
    Mystic m; 
    m.setLabel("beep"); 
    Mystic* p = &m; 
} 
0

Constructor versuchen Sie seine eine private zu verwenden, und Sie können nur öffentlich ein Zugriff, so dass Sie diesen Konstruktor öffentlich machen müssen, oder wenn Sie wollen den öffentlichen Standardkonstruktor verwenden und Standardwert Mystic() : label("default"){}

Verwandte Themen