Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перенос программы в Windows Forms Срочно нужно перенести код консольного приложения в с++ Буду очень признателен. Минимальный интерфейс. 1 текстовое поле для результата. 1 выдвижное меню для выбора тональности. #include <iostream> #include <locale> #include <conio.h> using namespace std; int main() { https://www.cyberforum.ru/ cpp-beginners/ thread1143620.html C++ Дана последовательность
Последовательность x1, x2, ... образована по закону (См. картинку) (i=1,2, ...). Дано действительное число e>0. Записать в файл h члены последовательности x1, x2, ..., остановившись после первого члена для которого выполнено |xi|<e
C++ Вычисление высоты дерева https://www.cyberforum.ru/ cpp-beginners/ thread1143617.html
Всем привет! Дерево создано на основе стека, но вот в чем беда компилируется с ошибкой error C4703: используется потенциально неинициализированная локальная переменная-указатель "p" Не пойму как исправить не переписывая полностью программу) #include "stdafx.h" #include "stdio.h" #include <locale.h> #include <iostream> using namespace std;
C++ Несколько исходников в проекте Возможно ли создание проекта с несколькими исходными файлами и одним, так сказать "головным"? То есть я не хочу всё писать в один файл, а хочу разбросать код по каждому файлу, для упрощения. Если можно, то как потом подключать вспомогательные .cpp файлы в главный файл? https://www.cyberforum.ru/ cpp-beginners/ thread1143610.html
C++ Как привязать цветовые координаты (rgb и hsl) к картинке
Подскажите пожалуйста!!! Как привязать цветовые координаты (rgb и hsl) к картинке в c++.
C++ Переведите с Pascal на C++ Пожалуйста, переведите на C++ var a:array of longint; n,m,i,j,i1,j1,max:Longint; begin read(n,m); for i:=0 to n-1 do for j:=0 to m-1 do read(a); max:=a; i1:=0; https://www.cyberforum.ru/ cpp-beginners/ thread1143604.html
C++ Переделать работу с текстовыми файлами под работу с двоичными файлами https://www.cyberforum.ru/ cpp-beginners/ thread1143593.html
Здравствуйте. В этой программе идёт работа с текстовыми файлами, а нужно с двоичными. Можно ли как-то переделать? #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <conio.h> #include <fstream> #include "struct.h"
C++ Подсчет кол-ва повторений букв и шифровка текста
Здравствуйте! Помогите,пожалуйста составить программу,которая считывает текст из файла input.txt , производит подсчет кол-ва повторений букв и выводит в файл output.txt буквы в алфавитном порядке и напротив них числа,которые показывают сколько раз эти буквы встречались в тексте.Также программа должна кодировать текст из файла,заменяя каждую букву следующей буквой, стоящей за той в...
C++ Структурное внесение Структурное внесение, которое характеризует Комплекс число. Функцию создавать согласно следующим ставили условия и тестировать: а) комплекс число показателю форме прихорашивать из алгебраической формы; б) комплекс число алгебраической форме прихорашивать из показателя формы; в) запутывался комплекс число брать. https://www.cyberforum.ru/ cpp-beginners/ thread1143576.html C++ Метод прогонки краевых задач для обыкновеных дифф. уравнений https://www.cyberforum.ru/ cpp-beginners/ thread1143559.html
k(x)=sin^2(x)+1 q(x)=cosx f(x)=e^x \beta1=1 \beta2=1
Ошибка при сравнении элемента динамического массива с числом C++
Здравствуйте! При попытке сравнения элемента двухмерного динамического массива с числом возникает критическая ошибка в момент выполнения программы. Что я делаю не так? Заранее спасибо за помощь. #include "stdafx.h" #include <iostream> #include <iomanip> #include <fstream> #include <windows.h> #define size 5
C++ В массиве в конец записи каждого элемента, который больше числа 10 добавить единицу Привет всем. Нужна ваша помощь. Задание: Задан целочислительный массив с N элементов. В конец записи каждого элемента, который больше числа 10 добавить единицу. Помогите, пожалуйста. https://www.cyberforum.ru/ cpp-beginners/ thread1143492.html
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
09.04.2014, 23:35 0

Можно ли как-то в дочернем классе получить указатель родителя? - C++ - Ответ 6023855

09.04.2014, 23:35. Показов 19964. Ответов 40
Метки (Все метки)

Ответ

Цитата Сообщение от newbie666 Посмотреть сообщение
Тоесть чтоб я мог у любого дочернего получить указатель на базовый, поменять какую - то переменную в базовом классе и, проверив её в другом экземпляре дочернего класса, убедится что она идентична переменной в первом экземпляре класса, т.к. они связанны общий базовым классом ....
В том и фишка, что подобное отношение - это не наследование типов. Смотри пример с самолетами.
Наследуются типы, а значение ты меняешь у объекта. Вдумайся в это. Вот и получается, что чтобы такое организовать нужно иметь, например, два экземпляра, которые ссылаются на базовый:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Base
{
public:
    Base() {}
};
 
class Child1
{
public:
    Child1(Base * p) : parent(p) {}
 
    Base * parent;
};
 
class Child2
{
public:
    Child2(Base * p) : parent(p) {}
 
    Base * parent;
};
 
int main()
{
    Base * base = new Base;
 
    Child1 * child1 = new Child1(base);
    Child2 * child2 = new Child2(base);
}
Внеся ссылку на базовый экземпляр мы обеспечили доступ к общему объекту (заметь, объекту). наследования тут пока вообще нет (специально).
А наследование типов здесь понадобится уже затем, чтобы получить возможность в качестве базового класса указывать один из потомков (т.к. все они будут приводимы к базе). Получаем вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Base
{
public:
    Base(Base * p = 0) : parent(p) {}
 
    Base * parent;
};
 
class Child1 : public Base
{
public:
    Child1(Base * p) : Base(p) {}
};
 
class Child2 : public Base
{
public:
    Child2(Base * p) : Base(p) {}
};
 
int main()
{
    Base * base = new Base;
 
    Child1 * child1 = new Child1(base);
    Child2 * child2 = new Child2(child1);
 
    child2->parent; // это child1
    child2->parent->parent; // это base
}
То же самое, что и мой предыдущий пример. И это именно то, что ты описывал. Остальные вещи уточнятся должны уже исходя из конкретной задачи.

Добавлено через 3 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
виртуалные конструкторы
Virtual Constructor

Вернуться к обсуждению:
Можно ли как-то в дочернем классе получить указатель родителя? C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2014, 23:35
Готовые ответы и решения:

Вызов виртуальной функции, определённой в дочернем классе, через указатель на базовый класс
Как вызвать виртуальную функцию, определённую в дочернем классе, через указатель на базовый класс?...

Получить родительский класс в дочернем классе
Здравствуйте. Подскажите пожалуйста есть следующие классы class A { #methods } class B...

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
У меня есть основной класс с названием Root один из его членов наследует дочерний класс SubRoot....

Для чего переопределяют методы, если можно просто в дочернем классе создать метод с таким же именем?
Например так: unit Unitclasses; interface uses Windows, Messages, SysUtils, Variants,...

40
09.04.2014, 23:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2014, 23:35
Помогаю со студенческими работами здесь

Объявить в классе-наследнике указатель, указывающий туда же, куда указывает указатель в классе-родителе
Здравствуйте. Имеется базовый класс MainWindow: #ifndef MAINWINDOW_H #define MAINWINDOW_H...

Как присвоить данные родителю в дочернем классе?
Решая одну задачу натолкнулся на проблему. У меня есть объект у которого есть List реализаторов, то...

Запуск конструктора родителя в дочернем конструкторе
Вобщем имеется два класса class Coma{ public: double x,y; Coma(){ x=0; y=0; }...

Имеется базовый класс с некоторым событием, как вызвать это событие в дочернем классе?
Братцы, что то я отморозился, помогите разобраться с концепцией... Суть проблемы, имеется базовый...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru