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

Указатель на метод класса. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа в порядке, однако segmentation fault. http://www.cyberforum.ru/cpp/thread89265.html
Код правильный, программа компилируется, работает как надо, однако при выходе получаю Segmentation fault. Так в чем же ошибка? // ADT-класс #include <iostream> using namespace std;
C++ !функция из данной программы #include<iostream.h> #include<math.h> #include<conio.h> const int n=3; void main ( ) { clrscr (); int A, B; int m=0; for (int i=0; i<n; i++) http://www.cyberforum.ru/cpp/thread88977.html
C++ Что называется NULL-принципом?
Очень подозреваю, что знаю сам принцип и его плюсы. Но уверенно связать свои знания с этим названием не могу. Ответьте, пожалуйста, на вопрсы: 1. Что называется NULL-принципом? 2. Как он точно формулируется?
Китайская теорема об остатках C++
товарищи есть у кого-то исходный код на Си который реализует данную теорему или может знаете где взять можно?? просто завтра нужно сдать, а как сделать ума не приложу, помогите пожалуйста
C++ Почему все считают, что qsort - НЕ из STL? http://www.cyberforum.ru/cpp/thread88624.html
Странно, что qsort не относят к STL!? Ведь qsort определена в библиотеке cstdlib: C Standard General Utilities Library У кого какие мнения?
C++ Экзамен... НАДО СРОЧНО... задача такая: используя не более 2х переменных, ввести последовательно 5 целых чисел, и вывести те ,которые положительные и трехзначные. если нет таких - сообщить об этом. НАДО ОЧЕНЬ СРОЧНО!!!! ОЧЕНЬ ХЕЛП, и ОЧЕНЬ ПОМОГИТЕ!!! подробнее

Показать сообщение отдельно
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224

Указатель на метод класса. - C++

25.01.2010, 16:08. Просмотров 1936. Ответов 7
Метки (Все метки)

Программа отказывается присваивать метод класса указателю. Как исправить?

Bash
1
2
3
test.cpp: In function ‘int main()’:
test.cpp:66: error: invalid use of non-static member function ‘virtual void Mammal::Speak() const’
test.cpp:67: error: invalid use of non-static member function ‘virtual void Mammal::Move() const’
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
65
66
67
68
69
70
71
72
73
#include <iostream>
using namespace std;
 
class Mammal
{
    public:
        Mammal(): itsAge(1) { }
        virtual ~Mammal() { }
        virtual void Speak() const = 0;
        virtual void Move() const = 0;
    protected:
        int itsAge;
};
 
class Dog: public Mammal
{
    public:
        void Speak() const { cout << "Woof!\n"; }
        void Move() const { cout << "Walking to heel...\n"; }
};
 
 
class Cat: public Mammal
{
    public:
        void Speak() const { cout << "Meow!\n"; }
        void Move() const { cout << "Slinking...\n"; }
};
 
 
class Horse: public Mammal
{
    public:
        void Speak() const { cout << "Whinny!\n"; }
        void Move() const { cout << "Galloping...\n"; }
};
 
 
int main()
{
    void (Mammal::*pFunc)() const = 0;
    Mammal* ptr = 0;
    int Animal;
    int Method;
    bool fQuit = false;
    
    while(fQuit == false)
    {
        cout << "(0)Quit (1)dog (2)cat (3)horse: ";
        cin >> Animal;
        switch(Animal)
        {
            case 1: ptr = new Dog; break;
            case 2: ptr = new Cat; break;
            case 3: ptr = new Horse; break;
            default: fQuit = true; break;
        }
        if(fQuit)
            break;
        
        cout << "(1)Speak (2)Move: ";
        cin >> Method;
        switch(Method)
        {
            case 1: pFunc = Mammal::Speak; break;
            default: pFunc = Mammal::Move; break;
        }
        
        (ptr->*pFunc)();
        delete ptr;
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru