【发布时间】:2013-07-12 06:18:03
【问题描述】:
我有如下结构、类和函数sn-p:
结构:
struct myData
{
short index;
char name[32];
}
类:
class myFoo
{
...
public:
short count;
myData** data;
...
}
功能:
int Do_Bar(myFoo vFoo)
{
...
myData* data = *vFoo.data;
for (short i=0; i<vFoo.count; ++i)
{
Printf("%3d %s", data.index, data.name);
}
...
}
函数调用:
...
myFoo foo;
SomeAPI_GetCompleteObjectList(&foo);
Do_Bar(foo);
...
但我的代码因这些代码而崩溃。但是,如果我删除了参数并在Do_Bar() 函数中创建了一个myFoo 类,则代码可以正常工作:
int Do_Bar(myFoo vFoo)
{
myFoo foo;
SomeAPI_GetCompleteObjectList(&foo);
...
myData* data = *vFoo.data;
for (short i=0; i<vFoo.count; ++i)
{
Printf("%3d %s", data.index, data.name);
}
...
}
为什么会这样?以及如何解决这个问题?
EDIT1:
我忘了提到foo 的初始化是在函数调用之前完成的。这是使用 API 初始化的。
我为此修改了代码。
【问题讨论】:
-
那甚至不应该编译!
data是一个指针,你使用.来访问成员而不是->。
标签: c++ pointers parameter-passing