Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dusuney
1 / 1 / 0
Регистрация: 13.11.2012
Сообщений: 27
#1

Передать параметр конустркутору производного класса - C++

15.12.2012, 14:17. Просмотров 289. Ответов 5
Метки нет (Все метки)

Нужно передать параметр конструктору производного класса "P3".
Вылетает ошибка при создании экземляра "P3" в классе "D". Я уверен, что ошибка происходит, при инициализации конструктора у наследника "P3". Собственно вопрос: как правильно описать конструктор у наследника "P3".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class P2
    {
        private: int X;
        private: int Y;
        public: P2(int xcord, int ycord)
        {
            X = xcord;
            Y = ycord;
        }
     };
 
class P3:public P2
    {
public:
    P3();                                // сам конструктор
    };
 
    class D{
    Milk(){
    P3 *on = new P3(4,4);      //ругается на этот момент
    }
    };
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 14:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать параметр конустркутору производного класса (C++):

Передать метод класса как параметр - C++
Есть класс A, у него есть метод B, как метод B подсунуть в конструктор std::thread? Что-то типа такого class A { void B{ ... } ...

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Создание указателя типа базового класса на экземпляр производного класса - C++
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?

Указатель на объект базового класса и адрес объекта производного класса - C++
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; } ~Class1() {delete j;}

Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса - C++
Класс В является производным от класса А. Определить обработчик исключительной ситуации на преобразование указателя базового класса А на...

Вызов объектом базового класса функцию из производного класса! - C++
Как можно осуществить вызов или передачу значения в базовый класс для дальнейшего вычисления этого значения в производном классе. Вот...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
15.12.2012, 14:21 #2
Цитата Сообщение от Dusuney Посмотреть сообщение
P3 *on = new P3(4,4); //ругается на этот момент
У Вас в классе P3 нет соответствующего конструктора
0
Nick Alte
Эксперт С++
1638 / 1010 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.12.2012, 14:23 #3
Первое: конструктор по умолчанию класса P3 объявлен, но не определён.
Второе: у класса P3 даже и не объявлен конструктор, принимающий два числа.
Третье: у функции Milk не объявлен вовзращаемый тип.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
15.12.2012, 14:27 #4
new используется лишь для того, чтоб конструктор производного класса вызывать? То же самое можно делать и с помощью списков инициализации:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class P2
{
    private:
        int X;
        int Y;
    public: P2(int xcord, int ycord)
    {
        X = xcord;
        Y = ycord;
    }
};
 
class P3:public P2
{
    public:
        P3(int x, int y) : P2(x, y) {}
};
 
class D : public P3
{
    public:
        D() : P3(4, 4) {}
};
1
Nick Alte
15.12.2012, 14:31
  #5

Не по теме:

Телепаты наконец-то вернулись из отпуска

0
Dusuney
1 / 1 / 0
Регистрация: 13.11.2012
Сообщений: 27
15.12.2012, 15:43  [ТС] #6
Цитата Сообщение от MrGluck Посмотреть сообщение
new используется лишь для того, чтоб конструктор производного класса вызывать? То же самое можно делать и с помощью списков инициализации:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class P2
{
    private:
        int X;
        int Y;
    public: P2(int xcord, int ycord)
    {
        X = xcord;
        Y = ycord;
    }
};
 
class P3:public P2
{
    public:
        P3(int x, int y) : P2(x, y) {}
};
 
class D : public P3
{
    public:
        D() : P3(4, 4) {}
};
Благодарю товаристщ!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 15:43
Привет! Вот еще темы с ответами:

Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса - C++
Здравствуйте! Можно ли использовать перегруженный оператор ввода/вывода в поток из базового класса для объекта производного класса, если...

как сделать чтобы объект производного класса сам себя добавлял в список или массив указателей базового класса? - C++
я хотел так, но программа просто падает void Student::add(Base** head) { cout << "I here" << endl; this->setName(); //все...

Предобъявление производного класса - C++
Привет всем. Такой вопрос:как предобъявить производный класс? Просто нужно сделать функцию друга как для производного, так и для базового...

Тип производного класса - C++
Как можно узнать тип производного класса на этапе компиляции?#include <iostream> #include <type_traits> struct A {}; struct B : A...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.12.2012, 15:43
Ответ Создать тему
Опции темы

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