关于c ++:使用类中的struct来构造另一个类

use the struct from a class to construct another class

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
class A
{
public:
A();
struct structname
{double a;....}
};

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

1
2
3
4
#include"A.h"
B::B(A::structname data)
{
}

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

问题是什么?

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

1
2
3
4
5
6
class A;
class B
{
public:
B(A::structname data);
}

实际结构:

1
2
3
4
5
6
7
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};
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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那里。

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