【发布时间】:2014-09-19 14:21:04
【问题描述】:
我有两个这样的课程 具有方法 void loadFile 的 driver.cpp 从 util.cpp
调用另一个方法 int initialDragonXPosint loadFile(Dragon * dragons)
{
int index = 0;
index++;
dragons[index].setPosX(initialDragonXPos);
}
和方法int initialDragonXPos这样
int initialDragonXPos( )
{
int pos = rand( ) % (MAX_DRAGON_XPOS * 2);
pos = pos + MIN_DRAGON_XPOS;
return pos;
}
这也是 setPosX 方法
void Dragon::setPosX(int posX)
{
this->posX = posX;
}
所以我得到了错误:从‘int (*)()’到‘int’的无效转换[-fpermissive]。那么我该如何解决它
【问题讨论】:
-
你必须调用一个函数来获取它的返回值...即使它不带参数。否则你只会得到它的地址,这当然是不同的类型。
-
如果
index++超出dragons的范围怎么办?您应该检查一下(或者最好使用 C++ 容器类,例如std::vector)。 -
@crashmstr:
std::vector通常不会在发布模式下检查。 -
@Deduplicator:除非您使用更高版本的 MSVC 编译器,它们会在发布版本中默认启用 on 边界检查,当然,这会带来很大的性能损失。
-
@Deduplicator 我的意思是,目前他不知道(本地)
dragons有多大,并且无法检查index是否超出范围而不通过大小,使用全局,或#define。正确使用std::vector会大大改变代码,他甚至可能不需要直接索引,或者至少能够知道数据的大小。
标签: c++