bool ändert sich komischerweise bei Loki::StaticDispatcher
-
winexec* schrieb:
Hallo,
Kann es sein, dass du in dieser Zeile eine Variable erstellst, die auf false ist und mit der du dann weiterarbeitest?
HatchingExecutor() : bool_(false) { std::cout << "Konstruktor" << std::endl; }
Das hab ich mir auch schon gedachte, aber der Konstruktor wird ja nur einmal aufgerufen und hier setze ich sie auf true:
if(lhs.x_ == rhs.x_) { bool_ = true; } std::cout << "Bool: " << bool_ << " Adresse: " << &bool_ << std::endl;Sonst gibt es einfach keinen Punkt wo ich sie auf false setze. Es ist zum heulen

mfg.
-
Hallo,
Guck noch einmal, ob das wirklich durchlaufen wird. Aber ansonsten wüsste ich nicht vom vorgegebenen Code her, wo der Fehler liegt.
MFG winexec*
-
winexec* schrieb:
Hallo,
Guck noch einmal, ob das wirklich durchlaufen wird.
Sonst würde er ja nicht Bool: 1 ausgeben, oder?
mfg.
-
vielleicht liegt es ja daran, dass bei
Dispatch::Go(a, c, exec);eine kopie von exec übergeben wird...
-
... schrieb:
vielleicht liegt es ja daran, dass bei
Dispatch::Go(a, c, exec);eine kopie von exec übergeben wird...
Aber dann würde doch "Konstruktor" nochmal ausgegeben?
edit: Scheiße, da wird ja dann der Kopierkonstruktor aufgerufen, mein Fehler. Okay daran liegt's, wie lässt sich das umgehen, die Go Funktion ist ja nicht meine...
mfg.
-
nicht wenn der copy-ctor ausgeführt wird
-
... schrieb:
nicht wenn der copy-ctor ausgeführt wird
ist mir auch gerade eingefallen (siehe edit)
-
keine ahnung, kenn mich mit loki nicht aus. kannst ja mal
typedef Loki::StaticDispatcher<HatchingExecutor&, Base, LOKI_TYPELIST_1(Widget)> Dispatch;probieren.
-
... schrieb:
keine ahnung, kenn mich mit loki nicht aus. kannst ja mal
typedef Loki::StaticDispatcher<HatchingExecutor&, Base, LOKI_TYPELIST_1(Widget)> Dispatch;probieren.
Auch gerade gedacht, nur: Intern verwendet die Lib ne Referenz und ich erhalte dann:
/usr/include/loki/MultiMethods.h:45: Fehler: reference wird in Referenztyp »HatchingExecutor&« umgeformtWas ist der Sinn eigentlich, dass der Executor bei jedem Dispatch kopiert wird?? Was haben sich die Programmierer dabei gedacht??!?
mfg.
-
eigentlich müsste go einen executor& nehmen. denn laut dem pdf hier heißt es
StaticDispatcher implements the Go member function, which takes a BaseLhs&, a BaseRhs&, and an Executor& [...]