Ich habe eine Reihe von nicht verwandten Strukturen, die ich zu einer Std :: Warteschlange hinzufügen möchte. Ich benutze eine Struktur namens message
, die ich verwende, um die nicht verwandten Strukturen zu kapseln, um sie in derselben Warteschlange zu speichern.Fügt ein Verweis auf std :: queue eine Kopie hinzu?
struct message {
char *struct_pointer;
size_t struct_size;
};
struct confirmer {
int32_t hello;
int32_t yellow;
double jello;
}
Innerhalb einer Nachricht, ich rufe dann
confirmer *confirm = new confirmer();
confirmer->hello = 100;
confirmer->yellow = 000;
confirmer->jello = 123.324;
message my_message = {(char *)confirm, sizeof(struct confirmer)};
other_namespace::do_things_to_message(my_message);
wo do_things_to_message
zu einem struct message
in einer Referenz nimmt.
Meine Frage ist, dass innerhalb der Funktion do_things_to_message
, wenn ich die Parameter curr_message
hinzufügen (das ist eine Referenz) auf ein std::container
, wird es eine Kopie der Referenz erzeugen und dass in dem Behälter gespeichert werden? I.e.
void do_things_to_message(struct message& curr_message) {
my_queue.push(curr_message) //where my_queue is a std::queue my_queue<message>
//do other things...
}
Also was ist my_queue tatsächlich speichern? Eine Kopie des Objekts? Das ursprüngliche Objekt? Etwas anderes?
Sie brauchen nicht den ganzen Code, um diese Frage zu stellen. Ein einfaches 'struct Foo {};' hätte getan. – juanchopanza
Die Deklaration von 'my_queue' sagt Ihnen, was es speichert. – melpomene
@melpomene also eine Kopie? Es tut mir leid, es ist nicht sehr klar für mich – user2635088