错误一般发生在使用.
进行访问时,原因可能在于:
- 你以为你定义了一个类对象,其实你是声明了一个函数,在编译器看来;
对类对象指针采用
.
的方式访问其成员变量;- 也包括基本类型变量,错误地使用
.
int a = 10;a.foo(); // 显然会提示“错误:表达式必须包含类类型”
- 1
- 2
- 也包括基本类型变量,错误地使用
1. 情况 1
class Test{public: Test(){ } void foo(){ }};int main(int, char**){ Test t(); // 编译器会将 t 视为一个函数; t.foo(); // 出错,表达式必须包含类类型 return 0;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
修改方法:
// 对象的定义,修改为:Test t;
- 1
- 2
当构造函数中存在一些参数时:
class Test{public: Test(int i) {} // 但要避免默认单参构造函数:Test(int i = 0) {} ...}int main(){ Test t(5); ...}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
2. 情况 2
Test* t = new Test(5);// 错误访问成员函数的形式:t.foo(); // 正确写法:t->foo();
- 1
- 2
- 3
- 4
- 5
- 6
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow