Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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++ 从另一个类在一个类中插入多集_C++_Composition_Multiset - Fatal编程技术网

C++ 从另一个类在一个类中插入多集

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:

我有一个类数据,它有一个multiset容器,我有一个类项,它有一个erscheidatum作为构造函数参数之一,所以我想把这个参数escheidatum插入到数据类的multiset中,我试着在Item类的构造函数中这样做,但是当我打印集合时,它是空的,控制台是空的,我不知道是否可以插入另一个类的集合

//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;
};

将成员更改为引用通常需要更多的思考,这样您就不会遇到悬而未决的引用。您是对的。这只是一个例子。我认为,如果你想避开悬而未决的引用,你可以使用智能指针。我在智能手机上写下了这个答案,对不起