Не могу добавить классам конструкторы и деструкторы

По заданию нужно добавить классам конструкторы и деструкторы . Одному классу добавить конструктор копирования. Каждый конструктор и деструктор должен выводить информацию о методе, который вызывает. Протестировать работу конструкторов и деструкторов создавая и уничтожая объекты в главной программе.

Вот код:

Order.h:

#pragma once
#include <string>
#include <iostream>
#include <vector>
#include <E:\C++ project\ConsoleApplication7\Item.h>
class Order
{
    std::string name;
    std::string phone;
    std::string town;
    std::vector<Item*> items;
public:
    std::string info() const;
    void init(std::string Name, std::string Phone, std::string Town);
    void additem(Item* item)
    {
        items.push_back(item);
    }
    Order(std::string Name, std::string Phone, std::string Town)
    {
        std::cout << "Order constructor with parameters : ";
        std::cout << Name << ", " << Phone << ", " << Town << std::endl;
    }
};

Order.cpp:

#include "Order.h"
#include <string>
std::string Order::info() const
{
    return "Order " + name + ", " + phone + ", " + town;
}

void Order::init(std::string Name, std::string Phone, std::string Town)
{
    name = Name;
    phone = Phone;
    town = Town;
}

Item.h:

#pragma once
#include <string>

class Item
{
    std::string name;
    int price;
public:
    std::string info() const
    {
        return "Item " + name + ", " + std::to_string(price);
    }
    void init(std::string Name, int Price)
    {
        name = Name; price = Price;
    }
};

ConsoleApplication7.cpp:

#include <iostream>
#include <E:\C++ project\ConsoleApplication7\Order.h>
int main()
{    
    Item s3, s4;
    s3.init("keyboard", 200);
    s4.init("laptop", 20000);
    Order s1, s2;
    s1.init("Andrew", "+380441231212", "Lviv");
    s2.init("Oleg", "+380661235212", "Kyiv");
    std::cout << s1.info() << std::endl << s3.info() << std::endl << s2.info() << std::endl << s4.info();
}

Я пытался написать конструктор в order.h, но что-то явно не так


Ответы (1 шт):

Автор решения: nevilad

Полагаю конструктор должен сохранять переданные ему значения. В случае Order это можно сделать так:

 Order(std::string Name, std::string Phone, std::string Town) : 
     name(Name), phone(Phone), town(Town)
 {
     std::cout << "Order constructor with parameters : ";
     std::cout << name << ", " << phone << ", " << town << std::endl;
 }

Деструктор должен освобождать ресурсы объекта, но в данном примере освобождать нечего, так что остается только вывод:

 ~Order()
 {
     std::cout << "Order destructor : ";
     std::cout << name << ", " << phone << ", " << town << std::endl;
 }

Конструктор копирования должен копировать объекты, вариант по умолчанию подойдет, но раз нужно выводить строку то примерно так:

Order(const Order& That) : 
   name(That.name), phone(That.phone), town(That.town)
{
    std::cout << "Order copy constructor : ";
    std::cout << name << ", " << phone << ", " << town << std::endl;
}

То же самое делайте с Item, ну и пишите код в main так, чтобы при запуске отработали все функции в которых выводятся строки.

→ Ссылка