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的类型属于类类型。 它不知道
你的前锋是否反过来声明或完全避免嵌套类型。