Warum ist es in Ordnung, eine int
-Methode außerhalb von main
aufzurufen, aber das Aufrufen einer void
-Methode gibt einen Fehler aus?Wie unterscheiden sich Void-Methoden oder warum kann ich keine void-Methode aufrufen, wenn eine int-Methode funktioniert?
#include <iostream>
using namespace std;
class A
{
public:
int foo();
void bar();
};
int A::foo() {
cout << "called foo()" << endl;
return 123;
};
void A::bar() {
cout << "called bar()" << endl;
};
A* a = new A();
int a_val = a->foo();
a->bar(); // error: unknown type name 'a'
int main(int argc, char* argv[])
{
a->bar();
cout << a_val << endl ;
}
Der Fehler ist:
main.cpp:24:1: error: unknown type name 'a'
a->bar(); // error: unknown type name 'a'
^
main.cpp:24:2: error: cannot use arrow operator on a type
a->bar(); // error: unknown type name 'a'
^
2 Fehler erzeugt.
Wenn diese Zeile kommentiert geführt wird, ist die Ausgabe:
called foo()
called bar()
123
Weil die Anweisung 'a-> bar();' keine Initialisierung ist. Es gehört in 'main'. – LogicStuff
Wow, die Downvotes! – frnhr