C++ 从另一个类在一个类中插入多集
我有一个类数据,它有一个multiset容器,我有一个类项,它有一个erscheidatum作为构造函数参数之一,所以我想把这个参数escheidatum插入到数据类的multiset中,我试着在Item类的构造函数中这样做,但是当我打印集合时,它是空的,控制台是空的,我不知道是否可以插入另一个类的集合C++ 从另一个类在一个类中插入多集,c++,composition,multiset,C++,Composition,Multiset,我有一个类数据,它有一个multiset容器,我有一个类项,它有一个erscheidatum作为构造函数参数之一,所以我想把这个参数escheidatum插入到数据类的multiset中,我试着在Item类的构造函数中这样做,但是当我打印集合时,它是空的,控制台是空的,我不知道是否可以插入另一个类的集合 //this is Item.h file #include"Data.h" #include<string> class Item { public:
//this is Item.h file
#include"Data.h"
#include<string>
class Item
{
public:
Item(std::string Name,int erschDatum, Data pd)// i put Data variable here though that i dont need it just to get access to->
:_Name(Name), dataobject(pd), _erda(erschDatum)//->data class maybe its not the best way.
{
dataobject.insert(erschDatum);
}
~Item();
private:
Data dataobject;
std::string _Name;
int _erda;
};
这是我的Data.h文件
#include<set>
#include<iostream>
class Data
{
public:
Data();
std::multiset<int>dataset;
void insert(int a) {
dataset.insert(a);
}
void showData() {
for (const auto& e : dataset) {
std::cout << e << std::endl;
}
}
~Data();
};
这就是主要功能
#include<iostream>
#include"Item.h"
#include"Data.h"
int main(){
Data DaOb;
Item Buch("xy", 1996,DaOb);
DaOb.showData();
}
您应该使用数据引用作为项的参数。像这样
class Item
{
public:
Item(std::string Name,int erschDatum, Data& pd)// i put Data variable here though that i dont need it just to get access to->
:dataobject(pd), _Name(Name), _erda(erschDatum)//->data class maybe its not the best way.
{
dataobject.insert(erschDatum);
}
~Item();
private:
Data& dataobject;
std::string _Name;
int _erda;
};
将成员更改为引用通常需要更多的思考,这样您就不会遇到悬而未决的引用。您是对的。这只是一个例子。我认为,如果你想避开悬而未决的引用,你可以使用智能指针。我在智能手机上写下了这个答案,对不起