Ich habe zwei Funktionen.C++: Übergeben Sie ein std :: vector <> Element durch Verweis auf ein temporäres Objekt
function1 ruft function2 auf, die einen Verweis auf ein Objekt zurückgibt, das ich dann zum Aufrufen einer öffentlichen Funktion verwendet.
function1(function2).returned_object.mymethod();
Dies ist eine ziemlich unhandliche Art, Dinge zu tun, aber es funktioniert.
Jetzt habe ich ein Problem, wo ich eine Methode aufrufen muss, dann eine andere Methode, also brauche ich ein temporäres Objekt.
Meine Frage ist, wie kann ich ein temporäres Objekt deklarieren, das das Objekt speichert, das als Referenz zurückgibt. Ich schätze, ich brauche einen Zeiger.
Das andere Problem ist, temp_obj ist in einem Vektor enthalten, und ich bin besorgt über Konflikte dort und Speicherverlust. Wenn ich einen Zeiger verwende, muss ich dann auch einen Destruktor verwenden?
Hier ist der relevante Code:
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];
}
}
}
"Wie kann ich ein temporäres Objekt deklarieren, das die Funktion speichert, die als Referenz zurückgibt" - Sie können keine Funktion in einem Objekt speichern. – immibis