为什么可以在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