Vengo da uno sfondo C# a C++. Supponiamo che abbia un metodo che crea un oggetto in un metodo sullo stack, quindi lo passo a un altro metodo di classi che lo aggiunge a un vettore memeber.Creazione di un oggetto sullo stack passando poi per riferimento a un altro metodo in C++
void DoStuff()
{
SimpleObj so = SimpleObj("Data", 4);
memobj.Add(so);
}
//In memobj
void Add(SimpleObj& so)
{
memVec.push_back(so); //boost::ptr_vector object
}
Ecco le mie domande:
- Una volta che i metodi DoStuff estremità sarà il modo da andare fuori portata e essere spuntato dalla pila?
- memVec ha un puntatore a così ma è saltato fuori cosa succede qui?
- Qual è il modo corretto per passare gli oggetti dello stack ai metodi che li memorizzeranno come puntatori?
Mi rendo conto che questi sono probabilmente ovvi per un programmatore C++ con qualche esperienza.
Mark
come nota a margine, "SimpleObj so = SimpleObj (" Data ", 4);" non è molto C++ ish, usa "SimpleObj so (" Data ", 4);" – Milan
Grazie, ho ancora un po 'di sbornia C# .; – Mark
@ milan1612: che purtroppo rimane ancora la notazione più portatile. il gruppo di compilatori C++ non riesce su quest'ultimo, [analogamente al caso] (http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.21). – Dummy00001