#c #oop
#c #ооп
Вопрос:
Я создаю класс, который наследует другой класс и имеет конструктор, который должен иметь параметр — объект базового класса —
Мой вопрос в том, что мне делать с этим объектом, как мне сохранить его, чтобы я мог получить доступ к его атрибутам?
Я не должен создавать другие атрибуты / контейнеры, такие как list<Baseclass> name
class TelephoneSub // Base class
{
private:
string ts_name;
string ts_country_code;
double ts_tariff_plan;
int ts_minutes_call;
public:
TelephoneSub(const TelephoneSub amp;p)
{
this->ts_name = p.ts_name;
this->ts_country_code = p.ts_country_code;
this->ts_tariff_plan = p.ts_tariff_plan;
this->ts_minutes_call = p.ts_minutes_call;
}
Производный класс
class TelephoneSubData : public TelephoneSub
{
private:
string tsd_phone_number;
vector<TelephoneSubData>tsd_contacts;
list<TelephoneSubData>tsd_called_numbers;
public:
// 2.1
TelephoneSubData() {}
// 2.2
TelephoneSubData(const string number,const TelephoneSub amp;sub)
{
this->tsd_phone_number = number;
TelephoneSub::TelephoneSub(sub);
}
double average_sum()const
{
double sum = 0;
int i = 0;
for (auto x : tsd_called_numbers)
{
i ;
sum = x.get_ts_tariff_plan();
}
return sum / i;
}
Комментарии:
1. Я думаю, вы, возможно, захотите переосмыслить этот дизайн, я бы не ожидал, что класс данных будет дочерним и, конечно же, не ожидал, что векторы / списки класса будут его членами.
2. Для меня совершенно непонятно, чего вы хотите достичь. Вам нужен доступ к каким-либо дополнительным атрибутам из `TelephoneSub` в вашем производном классе? Тогда рассмотрите возможность использования виртуальных функций.
3. У меня есть функции для записи в классе TelephoneSubData, и они требуют, чтобы я имел доступ к атрибутам со значениями из объекта в конструкторе копирования в классе TelephoneSubData — как мне получить доступ к значениям этого объекта? Потому что прямо сейчас они попадают в некоторые случайные места в памяти, поскольку я не назначил их определенному объекту, подобному этому