Hallo zusammen
Ich habe wieder ein Problem, das ich nicht selbst lösen kann und für das
mir die passenden Stichworte für eine erfolgreiche Suche fehlen. Hier
mein Minimalbeispiel:
1 | #include <iostream>
|
2 |
|
3 | std::ostream & Help(
|
4 | std::ostream & Output
|
5 | ){
|
6 | return Output << "Hilfetext";
|
7 | }
|
8 |
|
9 | class myclass{
|
10 | public:
|
11 | std::ostream & Help(
|
12 | std::ostream & Output
|
13 | ){
|
14 | return Output << "Hilfetext";
|
15 | }
|
16 | };
|
17 |
|
18 | int main(void){
|
19 | std::cout << Help << '\n'; /* funktionert */
|
20 |
|
21 | myclass Test{};
|
22 | std::cout << Test.Help << '\n'; /* Fehlermeldung */
|
23 |
|
24 | return 0;
|
25 | }
|
Fehlermeldung:
1 | [Error] no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and '<unresolved overloaded function type>')
|
Warum funktioniert die Sache mit einer freistehenden Funktion, nicht
aber mit einer Memberfunktion? Was muss ich ändern, damit mein Beispiel
funktioniert?
Bemerkungen:
- Die Funktion operator<< wird bereits verwendet, um das Objekt
auszugeben.
- Der Hilfetext wird dynamisch zur Laufzeit zusammengesetzt, deshalb
möchte ich eine solche Funktion wie in meinem Beispiel.