爲什麼可以在main
之外調用int
方法但調用void
方法會引發錯誤?void方法不同,或者爲什麼我不能調用void方法,當int方法工作正常?
#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 ;
}
錯誤是:產生
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錯誤。
當該行註釋掉,輸出爲:
called foo()
called bar()
123
因爲語句'a-> bar();'不是初始化。它屬於'main'。 – LogicStuff
哇,降價! – frnhr