我有兩個函數。C++:通過引用將一個std :: vector <>成員返回給一個臨時對象
function1調用function2,它返回一個對象的引用,然後我用它來調用一個公共函數。
function1(function2).returned_object.mymethod();
這是一個相當笨拙的做事方式,但它的工作原理。
現在我有一個問題,我需要調用一個方法,然後另一個方法,所以我需要一個臨時對象。
ClassName temp_obj = function1(function2);
temp_obj.method1();
temp_obj.method2();
我的問題是,我怎麼能聲明一個臨時對象,將存儲通過引用返回的對象。我猜我需要一個指針。
另一個問題是,temp_obj包含在一個向量中,我關心那裏的衝突和內存泄漏。如果我使用指針,那麼我是否也必須使用析構函數?
下面是相關代碼:
bool Machine::perform_function(std::vector<Job>& jobs) {
bool add = true;
if (can_fail) {
add = coin_toss();
}
for (int i = 0; i < my_jobs.size(); i++) {
if (add) {
find_job(my_jobs[i], jobs).toggle(name, item_name, true);
}
if (!add) {
find_job(my_jobs[i], jobs).toggle(name, item_name, false);
}
}
return add;
}
Job& Machine::find_job(std::string jobname, std::vector<Job>& jobs) {
for (int i = 0; i < jobs.size(); i++) {
if (jobs[i].is_job(jobname)) {
return jobs[i];
}
}
}
「我該如何聲明一個臨時對象來存儲通過引用返回的函數」 - 您無法將函數存儲在對象中。 – immibis