我有两个类,第一个包含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};
}
答案 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
那里。
你的前锋是否反过来声明或者完全避免使用嵌套类型。