我正在将科学代码从 Java 迁移到 C++。请告诉我:
a) 这两个函数有什么问题?
b) 我怎样才能解决这个问题?我可以像二维数组一样使用 int**
,但不能使用 Agent**
。
我收到此错误:“没有运算符 = 匹配此操作数”。
在普通的 C 中,我们可以将 NULL 分配给指针。我们也可以像二维数组一样使用type**
(即a[i][j]
)(objectSpace
的二维空间并且 agentSpace
被分配到其他地方)。
int** objectSpace;
Agent** agentSpace;
void Space::removeAgentAt(Point p)
{
agentSpace[p.x][p.y] = NULL;
}
void Space::putAgentTo(Agent agent, Point p)
{
agentSpace[p.x][p.y] = agent;
}
最佳答案
agentSpace
是指针,agentSpace[p.x]
是指针,但是agentSpace[p.x][p.y]
不是指针.
C++ 与 Java 不同;对象(通常)是按值引用的,而不是按引用引用的。
关于c++ - C++中的二维对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10733197/