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

Вызов виртуальной функции по указателю - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить массив на инициализированность http://www.cyberforum.ru/cpp-beginners/thread611373.html
std::list<my_type> c ; при с.push_back(my_type что_угодно) ; нужно скопировать значения одного массива А в массив В ,при этом не известно было ли в массиве В что-нибудь до этого ,закинутого туда пользователем .0xcdcdcdcd сейчас адрес ,но там будет что угодно в релизной версии,коли правильно я понял .
C++ В чём отличие switch и if? Препод задал вопрос, я ответил, то что switch использует только int и char, возвращается не логическое выражение, а целое... Она спросила, какие ещё есть отличия http://www.cyberforum.ru/cpp-beginners/thread611308.html
C++ Объявление класс в нескольких файлах
Можноли как-то объявление одного класса разбить на несколько заголовочных файлов? Хочу создать класс, в котором основной функционал находится в одной паре *.h, *.cpp, а дополнительный в других. Что бы при написании программ можно было подключать нужный мне функционал и не компилировать лишнее.
Нарисовал блок схему нужно проверить C++
Рисую блок схему первый раз за 2 года.. вот код программы #include <windows.h> #include <string> #include <iostream> #include <iomanip> #include <fstream> #include <stdio.h> #include <conio.h> #include <stdlib.h>
C++ Сравнение одночленов X со степенями http://www.cyberforum.ru/cpp-beginners/thread611205.html
Здравствуйте. Есть задача: Дана запись многочлена (от переменной X) произвольной степени с целыми коэффициентами, причем его одночлены могут быть и не упорядочены по степеням X, а одночлены одной и той же степени могут повторяться, например: -8x^4-74x+8x^4+5-x^3 Требуется привести подобные члены в этом многочлене, после чего распечатать его по убыванию степеней X. Как я понимаю сначала...
C++ Найти целую часть суммы чисел Исходные данные: x=12 a=9,5 Найти целую часть суммы чисел G, I, U подробнее

Показать сообщение отдельно
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.06.2012, 04:48     Вызов виртуальной функции по указателю
Ваш вариант в студии выполняется с крашем. Вот я попробовал по другому немного сделать. В студии работает:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class Basic
{
public:
  Basic()
  {
  }
 
  virtual void func1(int b)
  {
    cout<< "Basic:" << b << "*1=" << b * 1 <<endl;
  }
 
  virtual void func2(int b)
  {
    cout<< "Basic:" << b << "*2=" << b * 2 <<endl;
  }
 
  virtual void func3(int b)
  {
    cout<< "Basic:" << b << "*3=" << b * 3 <<endl;
  }
};
 
class Two: public Basic
{
  virtual void func1(int b)
  {
    cout<< "Two:" << b << "*1=" << b * 1 <<endl;
  }
 
  virtual void func2(int b)
  {
    cout<< "Two:" << b << "*2=" << b * 2 <<endl;
  }
};
 
void CallVirtualFunction(Basic* obj, int index, int arg)
{
  typedef void (Basic::*FunctionPtr)(int);
  FunctionPtr* vtable = *(FunctionPtr**)(obj);
  FunctionPtr vFunc = vtable[index];
  (obj->*vFunc)(arg);
};
 
int main()
{
  Basic obj;
  Two two;
 
  CallVirtualFunction(&obj, 0, 10);
  CallVirtualFunction(&obj, 1, 10);
  CallVirtualFunction(&obj, 2, 10);
  CallVirtualFunction(&two, 0, 10);
  CallVirtualFunction(&two, 1, 10);
  CallVirtualFunction(&two, 2, 10);
 
  getch();
  return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru