将classA结构传递给外部函数

时间:2014-03-08 15:49:12

标签: c++

我有一个名为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;
}

1 个答案:

答案 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;
}