2016-11-12 4 views
3

Ziemlich neu in C++ und das ist wahrscheinlich eine wirklich dumme Frage. Ich benötige den Zeiger cube_normals, auf den beide Elementfunktionen read_models() und proc_models() zugreifen, und der Zeiger muss jedes Mal initialisiert werden, wenn ich read_models() aufrufen.Wie initialisiere ich einen intelligenten Zeiger, der ein Klassenmitglied ist?

Innerhalb der Member-Funktion könnte ich tun:

PointCloud<A>::Ptr cube_normals (new PointCloud<A>); 

ich die Zeiger auf die andere Funktion übergeben können, aber es gibt 12 solcher Zeiger Ich benutze und es ist wahrscheinlich die sauberste Weg, dieses Problem nicht zu lösen.

Dies ist das Code-Snippet. Danke im Voraus!

class preproc 
{ 

public: 

    preproc(); 
    ~preproc(); 
    PointCloud<A>::Ptr cube_normals; 

    void read_models(); 
    void proc_models(); 

private: 

    ros::NodeHandle nh; 
    ros::NodeHandle nh_priv; 
}; 
+0

Da 'read_models()' und 'proc_models()' Methoden in derselben Klasse sind, muss nichts spezielles passieren, damit sie auf 'cube_normals' zugreifen können, ein Mitglied derselben Klasse. Sie greifen einfach darauf zu, als wäre es eine lokale Variable. Deine Frage ist unklar. Wenn Sie C++ - Grundlagen nicht vollständig verstehen, wäre die beste Antwort, Ihr C++ - Buch weiter zu lesen und das vorgestellte Material zu verstehen. –

+0

Sind Ihre anderen Smartpointer alle der Klasse 'PointCloud :: Ptr' oder gibt es verschiedene Typen anstelle von' A'? –

Antwort

Verwandte Themen