我有一个名为aclass的类,其中包含一个名为aStuct的结构。我希望将其传递给外部函数。
注意:外部函数将在另一个.cpp文件中定义。
#include <iostream>
typedef struct {} aStruct;
class aclass
{
public:
struct aStruct{
int anInt;
}structA;
};
void aFunction (aStruct *stuctA);
int main(int argc, const char * argv[])
{
aclass AClass;
AClass.structA.anInt = 2;
aFunction(&AClass.structA);
std::cout << AClass.structA.anInt;
return 0;
}
void aFunction (aStruct *stuctA)
{
stuctA->anInt = 3;
}
答案 0 :(得分:3)
您的代码存在的问题是您有两个名称相同的结构
typedef struct {} aStruct;
class aclass
{
public:
struct aStruct{
int anInt;
}structA;
};
第一个是全球结构
typedef struct {} aStruct;
,第二个是包含在类定义中的结构
class aclass
{
public:
struct aStruct{
int anInt;
}structA;
};
功能参数
void aFunction (aStruct *stuctA)
{
stuctA->anInt = 3;
}
具有全局结构的类型。此函数声明等同于
void aFunction ( ::aStruct *stuctA)
{
stuctA->anInt = 3;
}
您必须将其定义为具有在类
中定义的结构类型void aFunction (aclass::aStruct *stuctA)
{
stuctA->anInt = 3;
}