Другие языки программирования и технологии

Ошибка в программном коде с++

Создаю программу для тренировки с классами на с++. Но при создании класса- наследника возникают ошибки.

class dog {

public:

dog(string, string, float );

void show ();

private:

string name;

string poroda;

float cena;

};



class hotdog:public dog{

hotdog(string name, string poroda, string cena): dog(name, poroda, cena);

}

dog::dog(string name1, string poroda1, float cena1)

{dog::name=name1;

dog::poroda=poroda1;

dog::cena=cena1;};

void dog::show()

{cout<<"Sobaka "<<name<<" porodi "<<poroda<<" po cene "<<cena<<"$ "<<endl;

во первых пишет не допускается указание типа возвращаемого значения конструктора. А также ошибки, походу, в синтаксисе контруктора класса- наследника. В чем именно я ошибся?
Ты забыл точку с запятой после производного класса, и компилятор решил, что это возвращаемый тип конструктора.
И тело конструктора производного не указал.
ДЛ
Дмитрий Ломоносов
62 277
Лучший ответ
dog(string, string, float );
hotdog(string name, string poroda, string cena): dog(name, poroda, cena);
Базовому конструктору передаешь тип string в 3-м параметре, когда нужен float. И вообще косяками обилует
Нарек Едигарян
Нарек Едигарян
54 366
Запомни, НИКОГДА, слышишь, НИКОГДА не выкладывай сюда код. Он тут обрезанный будет.
Sasha Gnom
Sasha Gnom
32 943
Во-первых, у тебя у дога с ходдогом разные типы параметров в конструкторах. При создании сосиски ты передаешь символьную цену сосиски в числовую цену собаки, являющейся прообразом-сырьем для сосиски.

Ну и во-вторых, в конструкторе сосиски вообще какая-то фигня написана. Либо не пытайся вызвать конструктор собаки (тогда это будет function declaration), либо уж определяй конструктор сосиски до конца (тогда "{}" вместо ";" нужно) . А сейчас там какой-то гибрид function declaration и function definition написан.

Это то, что бросилось в глаза.
А по стилю - наследование было бы норм, если бы сосиска являлась частным случаем собаки.

А если собачатина - просто сырье, да еще и не вся собака пошла на изготовление одной сосиски, то разумнее было бы какой-нибудь умный указатель на собаку внутрь сосиски положить.
Кем надо быть, чтобы хотдог унаследовать от собаки?
Хотя некоторая логика всё же есть: кличка, порода и цена, за которую купили собаку, скрыта от хотдога, который сделали из этой собаки.. .

ЗЫ
В учебниках по ООП не пишут об основной проблеме наследования:
Если есть иерархия животное<-медведь, то решение от него наследовать плюшевого мишку - неправильное, так как он не ведёт себя, как животное.
Гаипов Уктам
Гаипов Уктам
11 112
скрин дебаггера компилятора приведи, не указывайте тип конструктора и деструктора
Costantin Morari
Costantin Morari
6 517