将类a结构体传递给外部函数

Passing a classA struct into an outside function

本文关键字:外部 函数 结构体 将类      更新时间:2023-10-16

我有一个叫做class的类,里面有一个叫做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;
}

代码的问题是您有两个具有相同名称的结构

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