Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 07.10.2015
Сообщений: 10
1

Наследование. Переопределение виртуальной функции

08.10.2015, 20:57. Просмотров 1499. Ответов 2
Метки нет (Все метки)

Здравствуйте. Нужно создать классы, наследование. Переопределить для каждого класса виртуальную функцию Print. К каждому классу добавить +поле.
Выводится ерунда.

Прикрепляю файл.
Наследование от:
Продукт -> Товар: Цветы и Торт (тоже наследование, от товара).

Мб кто-то видит ошибки? Спасибо.
 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
0
Вложения
Тип файла: zip 2 лабка.zip (1.08 Мб, 4 просмотров)
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2015, 20:57
Ответы с готовыми решениями:

Переопределение виртуальной функции
Всем доброй ночи :) Есть базовый абстрактный класс и два производных класса (А и В), в которых я...

Переопределение виртуальной функции в производном классе
Здравствуйте, я столкнулся с проблемой при переопределения виртуальной функции в производном...

Переопределение публичной виртуальной функции как private
struct Foo { public: virtual void show() { std::cout << "Foo" << std::endl; } }; ...

Переопределение виртуальной функции в разных файлах наследственных классов
Всем привет ! У меня есть проблема, допустим есть класс Base.h и соответственно он имеет Base.cpp в...

2
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
09.10.2015, 09:39 2
Лучший ответ Сообщение было отмечено jmurderer как решение

Решение

Типы полей какие должны быть? a и b у Товара - это что? Если это числа, то используй другой целый тип или приводи к нему при выводе, иначе они будут интерпретироваться как символы.
А здесь что?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        Product Pro(10, 20);
    Tovar Tov(20, 30, 100);
    Zweti Zwe(100, 5);
    Tort Tor(5, 10.09);
 
 
    Product P, *pP = &P;
    Tovar T, *tT = &T;
    Zweti Z, *zZ = &Z;
    Tort Tr, *Tt = &Tr;
    pP ->Print();
    tT ->Print();
    zZ ->Print();
    Tt ->Print();
Во-первых, зачем понадобились указатели? Во-вторых, P, T, Z, Tr инициализируются конструкторами по умолчанию, которые у тебя ничего не делают, и поля будут содержать мусор.
Вот так примерно должно быть:
C++
1
2
3
4
5
6
7
8
    Product Pro('a', 'b');
    Tovar Tov(20, 30, 100);
    Zweti Zwe(100, 5);
    Tort Tor(5, 10.09); // 10.09 - это что? Там целый тип
    Pro.Print();
    Tov.Print();
    Zwe.Print();
    Tor.Print();
0
0 / 0 / 1
Регистрация: 07.10.2015
Сообщений: 10
15.10.2015, 21:24  [ТС] 3
nmcf, исчезли некоторые ошибки - появились новые. https://pp.vk.me/c625120/v6251... f0DvWI.jpg

Вот что изменилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    Product *Pro = new Product("Торт", "Цветы");
    Pro->Print();
 
    Tovar *Tov = new Tovar("Торт", "Цветы", 100);
    Tov ->Print();
 
    Zweti *Zw = new Zweti(100, 50);
    Zw -> Print();
 
    Tort *Tor = new Tort(50, '1');
    Tor -> Print();
C++
1
2
3
4
5
6
7
8
9
10
11
using namespace std;
class Tovar: public Product
{ 
    int z;
public:
    Tovar(char *name_t, char *name_z, int zcena) : Product(name_t, name_z)
    { 
    z = zcena;
    }
    Tovar();
    ~Tovar();
C++
1
2
3
4
5
6
7
8
9
10
11
using namespace std;
 
class Zweti:public Tovar
{
    int sh;
public:
    Zweti(int zcena, int shtuki) : Tovar("sdsd", "ddfdf", zcena)
    {
        sh = shtuki;
    }
    Zweti();
В торт.cpp выскакивает ошибка об преобразовании параметра. И в главном .срр тоже.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include "tort.h"
#include <iostream>
using namespace std;
 
Tort::Tort(void)
{
    cout << endl;
}
void Tort::setgodn(char godn)
{
    this ->godn = godn;
}
void Tort::getgodn()
{
    cout <<"Качество: " << this ->godn<< endl;
}
Tort::~Tort(void)
{
    cout << endl;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2015, 21:24

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

Наследование,Понимания виртуальной функции
Вообщем дело вот какое,сейчас нет доступа к компьютеру. Прошу пояснить. У нас есть класс &quot;А&quot; и в...

Наследование. Переопределение метода родителя
не работает конструкция вида: class AllFigureData { protected: int id; int x; int y;...

Переопределение VTABLE при множественном наследование
Добрый вечер, #include &lt;iostream&gt; using namespace std; struct A { int a; virtual void...

Наследование, переопределение функций (из книги "Философия C++")
Читаю книгу Эккеля &quot;Философия C++&quot;, есть там такое задание: Сначала решил переопределить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.