使用一个类中的结构构造另一个类

use the struct from a class to construct another class

本文关键字:结构 另一个 一个      更新时间:2023-10-16

我有两个类,第一个包含结构,这就是在 A.h 中的内容

class A
{
public:
A();
struct structname
{double a;....};
};

我想用这个结构作为 B 构造函数的参数

#include "A.h"
B::B(A::structname data)
{
}

但我收到错误消息:"类 A"中的"结构名称"未命名类型

问题出在哪里?

详细信息:两个类在不同的.cpp文件中。在 A.cpp 和 B.cpp 中:我只是 #include A.h 和 B.h在 B.h :

class A;
class B
{
public:
B(A::structname data);
}

实际结构:

struct structname
{
std::vector<double> a={0,0,0};
std::vector<double> B={0,0,0};
std::vector<double> c={0,0,0};
std::vector<double> d={0,0,0};
}
class A
{
    public:
    A();
        struct structname
        {
            std::vector<double> a={0,0,0};
            std::vector<double> B={0,0,0};
            std::vector<double> c={0,0,0};
            std::vector<double> d={0,0,0};
        };
};
class B
{
     public:
     B(A::structname data);
};

只需格式化您的代码。你会看到你所有的错误。

显然,您正在 B.h 中向前声明 A(这就是我从您的片段中读到的)。如果要向前声明 A,编译器只知道某处有一个名为 A 的类型属于类类型。它不知道那里A::structname

做你的前向声明相反的方式,或者干脆避免嵌套类型。

相关文章: