为了账号安全,请及时绑定邮箱和手机立即绑定

为什么for循环,有关p的提示:表达式必须包含指针类型?

#include<stdlib.h>

#include<iostream>


class Coordinate

{

public:

int x;

int y;

void printX()

{

std::cout << x << std::endl;

}

void printY()

{

std::cout << y << std::endl;

}

};


int main(void)

{

Coordinate coor;                //用栈实例化对象

coor.x = 10;                    //用栈访问对象

coor.y = 20;

coor.printX();

coor.printY();


Coordinate *p = new Coordinate[5];

if (p = NULL)

{

return 0;

}

for (int i = 0; i < 5; i++)

{

p[i]->x = 0;

p[i]->y = 2;

p[i]->printX();

p[i]->printY();

}

delete[]p;

p = NULL;


std::system("pause");

return 0;

}



正在回答

1 回答

因为你在这里:

Coordinate *p = new Coordinate[5];

实例化了一个指针类型的对象(不知道这么表达对不对)所以下面应该是对指针指向的变量赋值。

而你的写法是错误的,不是指针。应该将p[i]->x = 0;改为p->x = 0;(p->x应该看作一个整体,意为

p所指向元素的x成员
0 回复 有任何疑惑可以回复我~
#1

weixin_慕沐4018656 提问者

可是我是按老师上课讲的示例操作的呀,老师就是那样写的
2020-04-03 回复 有任何疑惑可以回复我~
#2

一名不愿透漏姓名的沙雕 回复 weixin_慕沐4018656 提问者

我又看了一下,老师后面代码演示不是这么写的;你是不是看成视频中间那里对数组成员的访问了,你前面写的类里面是单一变量呀
2020-04-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103411    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

为什么for循环,有关p的提示:表达式必须包含指针类型?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信