вставка мультимножества в один класс из другого класса - PullRequest
0 голосов
/ 20 июня 2020

, поэтому у меня есть класс Data, который имеет контейнер мультимножества, и у меня есть класс Item, который имеет "erscheidatum" в качестве одного из параметров конструктора, поэтому я хочу, чтобы этот параметр escheidatum был вставлен в мультимножество в классе данных, который я пробовал чтобы сделать это в конструкторе класса 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();
}


1 Ответ

2 голосов
/ 20 июня 2020

Вы должны использовать ссылку Data в качестве параметра Item. Вот так

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