问题描述
|
class A{
static set<string> set1;
};
class B{
set<string> set2;
public:
A a;
}
in main.cpp
void B::comparision()
{
set2.insert(a.set1); //i am getting error
};
我如何用set1
的值初始化set2
。
解决方法
好吧,首先您需要3英镑才能公开访问:
class A {
public:
static set<string> set1;
}
您也可以从B
的定义中删除a
,因为您不需要A
的实例,因此只需要访问其静态公共成员之一。
然后应按如下方式修改您的“ 8”功能:
void B::comparison()
{
set2 = A::set1;
}
注意,“ 10”取一个值并将其插入集合中。这不足以复制整个集合。幸运的是,您可以使用一个赋值运算符,如上所示。
,我不确定ѭ11是什么,因为您从未声明过,但是一般语法为:
set2 = A::set1;
该语法的例外情况是如果初始化了“ 1”(即,在类构造函数中),在这种情况下,它看起来像:
B::B : set2(A::set1) { }
,通过初始化,我假设您要将静态集合的所有元素复制到B类中的集合(不保留其先前的内容)。在这种情况下,您需要将其分配为set2 = A::set1;
,静态数据成员由该类的所有对象共享,因此它不是任何对象的一部分。在这种情况下,set1不是对象a
的一部分。因此,您无法通过a.set1访问它。相反,您可以通过A::set1
访问静态数据成员。正如其他人已经说过的那样,您需要ѭ3才能公开访问。
如果要将A::set1
插入set2
,代码将如下所示:
set2.insert(A::set1.begin(),A::set1.end())