Verweis auf gelöschte Funktion?
-
Furble Wurble schrieb:
Ich sekundiere mal "kleiner Troll":
Das ist nicht der ganze Code.
Zuviel gekürzt, falsch gekürzt.Lies das:Den richtigen Code posten: reduziertes compilierbares Beispiel und komm mit einem kompletten Beispiel wieder.
Das ist mein komplettes Beispiel
Das einzige was fehlt ist das
#include <vector>
und#include <memory>
, aber das denke ich kriegt man auch so hin.Wie kommst du denn bitte darauf dass das nicht der komplette Code sein soll? Btw ist es leicht wiedersprüchlich ein compilierbares Beispiel zu fordern, welches einen Compile-Fehler demonstrieren soll, nur so am Rande.
-
Furble Wurble schrieb:
Ich sekundiere mal "kleiner Troll":
Das ist nicht der ganze Code.
Zuviel gekürzt, falsch gekürzt.Wenn man die fehlenden includes einbaut produziert der Code den Fehler
-
Was ist der Unterschied zwischen vertex und node? Heisst doch beides Knoten.
neighbours als unique_ptr sieht für mich merkwürdig aus. Ich würde entweder direkt node erwarten oder einen geteilten (also nicht unique) Pointer.
-
happystudent schrieb:
Wie kommst du denn bitte darauf dass das nicht der komplette Code sein soll?
Mein Posting überschnitt sich mit Deinem.
Das ist doch das komplette Beispiel, das ich sehen wollte.
-
manni66 schrieb:
Was ist der Unterschied zwischen vertex und node? Heisst doch beides Knoten.
Hm, ja vertex sollte wahrscheinlich eher "edge" heißen. Der Unterschied ist halt, das eine ist der Knoten, das andere die (gewichtete) Verbindung von zwei Knoten.
manni66 schrieb:
neighbours als unique_ptr sieht für mich merkwürdig aus. Ich würde entweder direkt node erwarten oder einen geteilten (also nicht unique) Pointer.
Ok, also mit
shared_pointer
dann? Werd ich gleich mal ausprobieren.Edit:
Furble Wurble schrieb:
Mein Posting überschnitt sich mit Deinem.
Das ist doch das komplette Beispiel, das ich sehen wollte.Ok, alles klar, dann Entschuldigung
-
happystudent schrieb:
manni66 schrieb:
Was ist der Unterschied zwischen vertex und node? Heisst doch beides Knoten.
Hm, ja vertex sollte wahrscheinlich eher "edge" heißen. Der Unterschied ist halt, das eine ist der Knoten, das andere die (gewichtete) Verbindung von zwei Knoten.
Du solltest dir wohl erst mal über die Modellierung klar werden. Ein Kante verbindet zwei Knoten. Ein Knoten kann durch mehrere Kanten mit anderen Knoten verbunden werden.
happystudent schrieb:
manni66 schrieb:
neighbours als unique_ptr sieht für mich merkwürdig aus. Ich würde entweder direkt node erwarten oder einen geteilten (also nicht unique) Pointer.
Ok, also mit
shared_pointer
dann? Werd ich gleich mal ausprobieren.Eher nicht. Wenn du dabei einen Zyklus einbaust, kannst du nichts mehr löschen.
-
Der Vollstänfigkeit halber: so geht's
#include <memory> #include <vector> struct node; struct vertex { vertex(vertex &&v) : neighbours(std::move(v.neighbours)), weight(v.weight) {} vertex() = default; std::unique_ptr<node> neighbours; double weight; }; struct node { std::vector<vertex> vertices; node(node &&v) : vertices( std::move(v.vertices)) {} node() = default; }; class weighted_graph { public: weighted_graph() { nodes.emplace_back(); } std::vector<node> nodes; }; int main() { weighted_graph wg; return 0; }
Der Moveconstructor muss zu Fuß implementiert werden!
-
manni66 schrieb:
Der Vollstänfigkeit halber: so geht's
Der Moveconstructor muss zu Fuß implementiert werden!
Cool, danke, das kompiliert jetzt
manni66 schrieb:
Du solltest dir wohl erst mal über die Modellierung klar werden. Ein Kante verbindet zwei Knoten. Ein Knoten kann durch mehrere Kanten mit anderen Knoten verbunden werden.
Ja, also da es sich dabei um einen gerichteten Graphen handlen soll müsste das aber so passen denke ich, da man ja nur zu den Knoten laufen können soll, auf die die aktuelle Kante zeigt.
-
manni66 schrieb:
Ein Kante verbindet zwei Knoten.
Vielleicht will er auch einen Hypergraphen implementieren
-
manni66 schrieb:
Der Vollstänfigkeit halber: so geht's
Der Moveconstructor muss zu Fuß implementiert werden!
Sollte eigentlich nicht sein, der gcc schluckts problemlos.
-
Um das Kind mal beim Namen zu nennen: Der Microsoft-Compiler generiert Move-Konstruktoren noch nicht automatisch wie er es sollte -- AFAIK.
-
Nathan schrieb:
manni66 schrieb:
Der Vollstänfigkeit halber: so geht's
Der Moveconstructor muss zu Fuß implementiert werden!
Sollte eigentlich nicht sein, der gcc schluckts problemlos.
Ok, damit es jeder versteht
Der Moveconstructor muss für die Banane MSVC 2013 zu Fuß implementiert werden!
-
Heißt dass jetzt tatsächlich dass ich einen Bug gefunden habe? Kann ich noch gar nicht glauben
Wo reportet man denn sowas?
-
manni66 schrieb:
Nathan schrieb:
manni66 schrieb:
Der Vollstänfigkeit halber: so geht's
Der Moveconstructor muss zu Fuß implementiert werden!
Sollte eigentlich nicht sein, der gcc schluckts problemlos.
Ok, damit es jeder versteht
Der Moveconstructor muss für die Banane MSVC 2013 zu Fuß implementiert werden!
Da muss es einen Patch o.ä. geben, denn hier http://rise4fun.com/Vcpp/4j7 kompiliert es mit VC 2013.
Den C'tor defaulten geht aber, oder?
-
Furble Wurble schrieb:
manni66 schrieb:
Nathan schrieb:
manni66 schrieb:
Der Vollstänfigkeit halber: so geht's
Der Moveconstructor muss zu Fuß implementiert werden!
Sollte eigentlich nicht sein, der gcc schluckts problemlos.
Ok, damit es jeder versteht
Der Moveconstructor muss für die Banane MSVC 2013 zu Fuß implementiert werden!
Da muss es einen Patch o.ä. geben, denn hier http://rise4fun.com/Vcpp/4j7 kompiliert es mit VC 2013.
Den C'tor defaulten geht aber, oder?
Nein: error C2610: 'vertex::vertex(vertex &&)' : is not a special member function which can be defaulted
-
happystudent schrieb:
Heißt dass jetzt tatsächlich dass ich einen Bug gefunden habe? Kann ich noch gar nicht glauben
Wo reportet man denn sowas?
Du bist wohl eher in eine der vielen Baustellen gestolpert:
kkaw schrieb:
Um das Kind mal beim Namen zu nennen: Der Microsoft-Compiler generiert Move-Konstruktoren noch nicht automatisch wie er es sollte -- AFAIK.
-
...zumindest war das mal so vor VS 2013. Laut Herb Sutter soll VS 2013 das eigentlich schon können mit den vom Compiler selbst generierten Move-Ctoren. Vielelicht ist da ja doch noch ein Wurm drinne.
http://herbsutter.com/2013/11/18/visual-c-compiler-november-2013-ctp/
-
kkaw schrieb:
...zumindest war das mal so vor VS 2013. Laut Herb Sutter soll VS 2013 das eigentlich schon können mit den vom Compiler selbst generierten Move-Ctoren. Vielelicht ist da ja doch noch ein Wurm drinne.
http://herbsutter.com/2013/11/18/visual-c-compiler-november-2013-ctp/Das ist aber nur eine Preview (obwohl man damit AFAIK auch Programme für den MS Appstore bauen darf). Ich vermute, dass es ein VS 2014 geben wird, das diese Funktionen dann "offiziell" enthält.