我有一个小例子。
我试图从不在同一名称空间中的类向我的std :: vector添加数据。
两个班级都是一样的。
如何将数据从不在同一名称空间中的类推送到矢量
class A
{
public:
std::string name;
int32_t Size;
};
namespace TEST {
class A
{
public:
std::string name;
int32_t Size;
};
class File
{
public:
std::vector<A> data;
};
}
int main()
{
A data = { "outside namespace", 10 };
TEST::File file;
file.data.push_back(data);
return 0;
}
答案 0 :(得分:2)
如何将数据从不相同的类推送到矢量 命名空间
问题不是真正不同的命名空间,但问题是 def index
@locations = Location.order_by_parent(top: nil)
end
和A
是两个不同的类,你不能将TEST::A
推送到A
s的向量中
答案 1 :(得分:2)
我想你需要TEST::A
中的额外构造函数来复制全局A
中的成员:
namespace TEST {
class A
{
public:
A(const ::A& a) :
name(a.name),
Size(a.Size)
{}
std::string name;
int32_t Size;
};
...
当推送到矢量时,请执行以下操作:
int main()
{
A data = { "outside namespace", 10 };
TEST::File file;
file.data.push_back(TEST::A(data));
return 0;
}
答案 2 :(得分:1)
使用命名空间名称限定名称:
TEST::A data = { "outside namespace", 10 };
A
和TEST::A
是两个不同的类。
答案 3 :(得分:0)
您声明向量以接受其名称空间中相关类的对象:
std::vector<A> v; // will accept objects of class A
std::vector<TEST::A> v; // will accept objects of class TEST::A