如何使用另一个类的静态集合初始化集合
how to initilize the set using static set of another class...?
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
首先,您需要A::set1
是可公开访问的:
class A {
public:
static set<string> set1;
}
您还可以从B
的定义中删除a
,因为您不需要A
的实例,您只需要访问它的一个静态公共成员。
那么你的comparison
函数应该修改如下:
void B::comparison()
{
set2 = A::set1;
}
注意,insert
接受一个值并将其插入到集合中。这将不足以复制整个集合。幸运的是,您可以像上面那样使用赋值操作符。
我不确定void B::comparison()
是什么,因为你从来没有声明过它,但一般的语法是:
set2 = A::set1;
该语法的例外是如果set2
被初始化(即,在类构造函数中),在这种情况下它看起来像:
B::B : set2(A::set1) { }
通过initialize,我假设您想将静态集合的所有元素复制到类B中的集合(不保留其先前的内容)。在这种情况下,您需要将其分配为set2 = A::set1;
静态数据成员由类的所有对象共享,因此它不是任何对象的一部分。在这种情况下,set1不是对象a
的一部分。你不能通过。set1访问它。相反,您可以通过A::set1
访问静态数据成员。正如其他人已经说过的,你需要A::set1
是可公开访问的。
如果你想把A::set1
插入set2
,代码看起来像这样:set2.insert(A::set1.begin(), A::set1.end())
相关文章:
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 基于boost的程序的静态链接——zlib问题
- 检查值是否在集合p1和p2中,但不在p3中
- 带过滤器的现代迭代c++集合
- 在静态库中嵌入类方法
- 如何将结构插入到集合中并打印集合的成员
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 集合上的输出迭代器:assign和increment迭代器
- 实例的静态集合
- 在类中使用静态集合来存储类
- 如何使用另一个类的静态集合初始化集合