Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用另一个类的静态集合初始化集合。。。? A类{ 静态设置set1; }; B类{ 设置set2; 公众: A A; } in main.cpp void B::comparison() { set2.insert(a.set1);//我得到一个错误 };_C++_Set - Fatal编程技术网

C++ 如何使用另一个类的静态集合初始化集合。。。? A类{ 静态设置set1; }; B类{ 设置set2; 公众: A A; } in main.cpp void B::comparison() { set2.insert(a.set1);//我得到一个错误 };

C++ 如何使用另一个类的静态集合初始化集合。。。? A类{ 静态设置set1; }; B类{ 设置set2; 公众: A A; } in main.cpp void B::comparison() { set2.insert(a.set1);//我得到一个错误 };,c++,set,C++,Set,如何通过初始化将set2的值初始化为set1,我假设您希望将静态集合的所有元素复制到类B中的集合(而不保留其以前的内容)。在这种情况下,需要将其分配为set2=A::set1通过初始化,我假设您希望将静态集合的所有元素复制到类B中的集合(而不保留其以前的内容)。在这种情况下,需要将其分配为set2=A::set1我不确定什么是void B::comparison(),因为您从未声明过它,但一般语法是: class A{ static set<string> set1; }; cla

如何通过初始化将
set2
的值初始化为
set1

,我假设您希望将静态集合的所有元素复制到类B中的集合(而不保留其以前的内容)。在这种情况下,需要将其分配为
set2=A::set1

通过初始化,我假设您希望将静态集合的所有元素复制到类B中的集合(而不保留其以前的内容)。在这种情况下,需要将其分配为
set2=A::set1

我不确定什么是
void B::comparison()
,因为您从未声明过它,但一般语法是:

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
};
该语法的例外情况是,
set2
正在初始化(即在类构造函数中),在这种情况下,它看起来像:

set2 = A::set1;

我不确定什么是
void B::comparison()
,因为您从未声明过它,但一般语法是:

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
};
该语法的例外情况是,
set2
正在初始化(即在类构造函数中),在这种情况下,它看起来像:

set2 = A::set1;

首先,您需要公开访问
A::set1

B::B : set2(A::set1) { }

请注意,
insert
获取单个值并将其插入集合中。这不足以复制整个集合。幸运的是,您有一个赋值运算符可以如上所示使用。

首先,您需要公开访问
A::set1

B::B : set2(A::set1) { }

请注意,
insert
获取单个值并将其插入集合中。这不足以复制整个集合。幸运的是,您可以如上所示使用赋值运算符。

静态数据成员由类的所有对象共享,因此它不是任何对象的一部分。在这种情况下,set1不是对象
a
的一部分。因此,您无法通过.set1访问它。相反,您可以通过
A::set1
访问静态数据成员。正如其他人所说,您需要公开访问
A::set1

如果要将
A::set1
插入
set2
,则代码如下所示:
set2.insert(A::set1.begin(),A::set1.end())

静态数据成员由类的所有对象共享,因此它不是任何对象的一部分。在这种情况下,set1不是对象
a
的一部分。因此,您无法通过.set1访问它。相反,您可以通过
A::set1
访问静态数据成员。正如其他人所说,您需要公开访问
A::set1

如果要将
A::set1
插入
set2
,则代码如下所示:
set2.insert(A::set1.begin(),A::set1.end())

@Mat:yes。我假设OP已经修复了这些类型的错误,并且正在寻找访问另一个类的静态元素的语法。@Mat:是的。我假设OP已经修复了这些类型的错误,并且正在寻找访问另一个类的静态元素的语法。任何理智的开发人员都会建议不要在方法/函数未执行的操作之后命名它,也就是说,不要将执行赋值的方法命名为“比较”。任何头脑清醒的开发人员都会建议不要在方法/函数未执行的操作之后命名该方法/函数,也就是说,不要将执行赋值的方法命名为“比较”。