為什么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;
}
2020-04-02
因為你在這里:
Coordinate *p = new Coordinate[5];
實例化了一個指針類型的對象(不知道這么表達對不對)所以下面應該是對指針指向的變量賦值。
而你的寫法是錯誤的,不是指針。應該將p[i]->x = 0;改為p->x = 0;(p->x應該看作一個整體,意為
p所指向元素的x成員