Hoi,
Ik probeer in een programma hier de operator-> te overloaden, maar het wil niet werken als de instantie van het object al een pointer is. Klein voorbeeld:
In dit voorbeeld krijg ik alleen de melding in het tweede geval, als de instantie dus op de stack staat. Is er een manier om dit voor alle situaties werkend te krijgen?
-Edit-
Ik compileer dit trouwens met zowel Visual C++ 6.0 als Visual C++ .NET 2003
Ik probeer in een programma hier de operator-> te overloaden, maar het wil niet werken als de instantie van het object al een pointer is. Klein voorbeeld:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| class A { public: int i; A *operator->() { std::cout << "Operator-> called" << std::endl; return this; } }; int main( int argc, char *argv[]) { A *p = new A(); A a; p->i = 0; // Doesn't work with the overloaded operator a->i = 0; // Uses operator->() std::cin.get(); return 0; } |
In dit voorbeeld krijg ik alleen de melding in het tweede geval, als de instantie dus op de stack staat. Is er een manier om dit voor alle situaties werkend te krijgen?
-Edit-
Ik compileer dit trouwens met zowel Visual C++ 6.0 als Visual C++ .NET 2003
[ Voor 11% gewijzigd door ^Mo^ op 04-11-2005 11:36 ]
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs