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

时间:2016-02-26 23:29:15

标签: c++ class struct

我有两个类,第一个包含struct, 这就是A.h

中的内容
class A
{
public:
A();
struct structname
{double a;....};
};

我希望将此结构用作B

的构造函数的参数
#include "A.h"
B::B(A::structname data)
{
}

但是我收到了错误消息: 'A类'中的'structname'未命名类型

问题是什么?

详细信息:两个类位于不同的.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};
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

你的前锋是否反过来声明或者完全避免使用嵌套类型。