Tôi đến từ nền C# đến C++. Nói rằng tôi có một phương thức tạo một đối tượng trong một phương thức trên chồng, sau đó tôi chuyển nó sang phương thức lớp khác để thêm nó vào một vector của memeber.Tạo đối tượng trên ngăn xếp rồi chuyển qua tham chiếu đến phương thức khác trong 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
}
Dưới đây là những câu hỏi của tôi:
- Khi các phương pháp DoStuff đầu sẽ như vậy đi ra khỏi phạm vi và được popped từ stack?
- memVec có con trỏ như vậy nhưng nó đã xuất hiện những gì xảy ra ở đây?
- Whats cách đúng để chuyển đối tượng ngăn xếp đến các phương thức lưu trữ chúng dưới dạng con trỏ?
Tôi nhận ra những điều này có thể hiển nhiên đối với một lập trình viên C++ với một số expereince.
Đánh dấu
giống như một lưu ý phụ, "SimpleObj so = SimpleObj (" Dữ liệu ", 4);" không phải là rất C++ ish, sử dụng "SimpleObj như vậy (" Dữ liệu ", 4);" – Milan
Cảm ơn, vẫn còn một số C# nôn nao .; – Mark
@ milan1612: không may đó vẫn là ký hiệu di động nhất. một loạt các trình biên dịch C++ không thành công, [tương tự như trong trường hợp] (http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.21). – Dummy00001