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

Базовый класс и производный... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск слова в предложениях http://www.cyberforum.ru/cpp-beginners/thread170154.html
Программа должна считывать текст из файла, выводить его не экран добавляя в конце каждого предложения сколько раз встретилось в предложении слово введенное с клавиатуры. Помогите плиз.... Все что смог сделать: #include "stdafx.h" #include <iostream> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv) { string a("bla. bla bla cbla"), c, b="."; cout<<"Vvedit`...
C++ Найти координаты основания высоты. Задача: Треугольник задается координатами своих вершин на плоскости: А(x1, y1), B(x2, y2), C(x3, y3). Найти длину и координаты основание высоты, опущенной из вершины А на сторону ВС. Саму высоту нашла, но координаты не могу. http://www.cyberforum.ru/cpp-beginners/thread170150.html
C++ Никак не могу разобраться с конструктором.
Добрый день. Недавно стал изучать C++. Уже 2 день пытаюсь понять суть конструктора, но не могу. Код который присутствует в книжках, не работает в компиляторах visual C++ 10 и DEV-C++ 4.9.9.2. :( например вот на такой код компилятор говорит: функция член локального класса не имеет тела и подсвечивает строку где у меня конструктор. Хотя в книжках показываются такие примеры class...
Оператор условия в C++ C++
Не как не могу написать программу по данной задаче(вложение)
C++ Найти количество элементов матрицы, значения которых не превышают по абсолютной величине Х http://www.cyberforum.ru/cpp-beginners/thread170115.html
1) Дана матрица О (2,3) Найти кол-во элементов, значения которых не превышают по абсолютной величине Х. Если кол-во больше 3, то найти минимальный элемент. Пожалуйста последний раз прошу такой помощи:::это надо на языке с++ в среде Borland C++ bilder 6
C++ Какие перспективы у C++ в будущем? Какие перспективы у си++ в будущем? Я слышал, что сейчас лучше уже начинать учить си шарп или java? подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
28.09.2010, 18:03     Базовый класс и производный...
Если я вас правильно понял:

C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
   protected:
      void foo() { cout << "foo() called\n";  };
} objA;
 
class B : public class A
{
   public:
      void g(){ cout << "g() called\n\t" };
};
При таких условиях задачи я не вижу её решения: objA не принадлежит классу B и никогда вообще о нём не слышал.

Однако, вариант есть такой:

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
31
32
33
34
35
36
37
class A
{
   protected:
      void foo() 
      { 
          cout << "foo() called\n";  
      };
 
   public:
      virtual void g() //обратите внимание на ключевое слово virtual
      {
          cout << "original g() called\n"; 
      };
} objA;
 
class B : public A
{
   public:
      virtual void g() //обратите внимание на ключевое слово virtual
      {
           cout << "g() called\n\t";
           foo(); 
      };
} objB;
 
int main( int argc, char ** argv )
{
   objA.g();                     //Вызовется g() из объекта типа A, как и должно быть
 
   A * ptrA = (A*)(&objB); //берём адрес objB, приводим его к типу указателя на A и
                                    //записываем в ptrA
 
   ptrA->g();                   //вызываем g() из объекта типа B, хотя указатель думает,
                                    //что указывает на объект типа A (см. виртуальные функции)
 
   return 0;
}
Что почитать:
Виртуальные функции, Таблица виртуальных методов

Ну и всё в этом роде.

Другого варианта пока не приходит в голову.

Удачи.
 
Текущее время: 10:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru