【发布时间】:2014-07-30 08:41:33
【问题描述】:
我在类 World 中的构造函数有问题。
我创建了一个带有指针的二维数组,其中数组中的每个条目都是 Organism 类型,因此代码行:
Organism* grid[20][20];
当我运行我的程序时,我只看到
hello
然后,我收到一条消息,说我的程序已停止工作。我很确定这是代码行
grid[i][j]->symbol = ' ';
这就是问题所在。为了看看会发生什么,我把那行改成了
grid[i][j];
并且没有收到任何错误。但是,我输入 -> 的那一刻,我似乎得到了错误。
在我放 -> 之后我的程序停止工作有什么原因吗?任何帮助将不胜感激。
这是我的代码:
#include <iostream>
using namespace std;
class Organism
{
public:
char symbol;
};
class World
{
public:
World();
private:
Organism* grid[20][20];
};
int main()
{
World world;
return 0;
}
World::World()
{
for(int i = 0; i < 20; i++)
for(int j = 0; j < 20; j++)
{
cout << "hello" << endl;
grid[i][j]->symbol = ' ';
cout << "here" << endl;
}
}
【问题讨论】:
-
你有一个指向
Organism的指针数组,它们不指向任何东西。 -
是的,如果没有为对象分配内存,
->运算符应该如何取消引用指针? -
我想我的问题是我没有完全理解指针。
-
@enochsoccer 一个指针告诉你在内存中可以找到其他东西的下落。这并不意味着任何形式的所有权。
标签: c++ arrays class constructor