Я создаю новый экземпляр моего объекта, а затем сохраняю каждый экземпляр виртуальной функции в массив.Доступ к значениям, хранящимся в объекте C++
Проблема заключается в том, что я не могу получить значение каждого объекта, как только я его создать,
Чтобы быть ясно, я просто хочу, каждый экземпляр floors
я создаю, чтобы вернуть значение Int при вызове. Поскольку моя виртуальная функция build(int a)
возвращает выходной ток int
является
We are adding a spot to value 0 in our array
мне нужно значение также добавить к этому output
Так на основе моего текущего примера он должен показать значение 5
Я предполагаю, что это должно работать из-за myBuilding.add(new floors(5));
complex.h
class complex {
protected:
int num;
public:
virtual void build(int a) {
num = a;
}
};
main.cpp
#include "floors.h"
int main() {
building myBuilding;
myBuilding.add(new floors(5));
myBuilding.build();
return 0;
}
floors.h
class floors : public complex {
private:
int quantity;
public:
floors(const int& init_quant) :
quantity(init_quant)
{
}
int build(floors()) {
std::cout << "This is the floors class" << quantity << '\n';
return quantity;
}
};
И это класс обработки массива, building.h
class building {
public:
static const int max_materials = 100;
complex* materials[max_materials];
int num_materials;
public:
building() : num_materials(0) {}
~building() {
for(int i = 0; i < num_materials; ++i) { delete materials[i]; }
}
bool add(complex* s) {
if(num_materials >= max_materials) { return false; }
materials[num_materials++] = s;
return true;
}
void build() {
for(int i = 0; i < num_materials; ++i) { materials[i]->build(i);
std::cout << "We are adding a spot to value " << i << " in our array" << '\n';
}
}
};
Просто боковое примечание к вашему коду. У вас будет утечка памяти каждый раз, когда вы пытаетесь добавить пол, и вы вышли за пределы «max_materials». Было бы лучше использовать 'std :: array' и хранить' std :: unique_ptr', чем вам не придется беспокоиться об очистке. – pstrjds
Спасибо тон за вход bro. Я очень новичок в C++ и люблю его до смерти! Это назначение было намного проще, чем это. И есть намного больше, поэтому я показал, что я играю с ним сейчас, потому что это произошло, потому что я хочу узнать больше. Мне нравится учиться делать все возможное с каждым заданием, поэтому я действительно не свой материал. – wuno