Hallo,
Ich habe folgendes Konstrukt. Ich habe zwei getter-Methoden in der
Klasse Foo, eine die einen Nonconst Referenz zurück gibt und eine die
eine Const Referenz liefert.
Erstere ist für den internen Gebrauch, um nicht einen großen Block Code
nonconst implementieren zu müssen.
1 | class Foo
|
2 | {
|
3 | private:
|
4 | Tmp tmp;
|
5 | Tmp& getTmp() { return tmp; };
|
6 |
|
7 | public:
|
8 | const Tmp& getTmp() const { return tmp; };
|
9 |
|
10 | void changeTmp();
|
11 | };
|
12 |
|
13 | class Bar
|
14 | {
|
15 | void printTmp(const Tmp& tmp} { ... };
|
16 |
|
17 | void doSomething(Foo& foo) { foo.changeTmp(); printTmp(foo.getTmp()); };
|
18 | };
|
Dabei habe ich das Problem, dass er bei der Übergabe an Bar::printTmp()
die private Nonconst Methode aufrufen will, was einen Fehler hervorruft.
Warum ist das so? Ich sollte doch von einem Nonconst Objekt eine
Const-Methode aufrufen können, oder? Füge ich dem Foo& foo ein const
hinzu geht die getter Methode, aber klarerweise changeTmp() geht nicht.
Ich hoffe es kann mir wer die Frage beantworten.
Danke - Robert