如何使用另一个类的静态集合初始化集合?

问题描述

|
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())
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...