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

Не могу в дочернем классе вызвать protected метод - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировки http://www.cyberforum.ru/cpp-beginners/thread364954.html
Доброго времени суток. Задача была, отсортировать диагонали матрицы nxn, параллельные побочной методом выбора, вроде всё сделал, а побочную тоже сортирует, не могу допереть где '=' убрать #include...
C++ помогите!! побитовыми операциями вычесть два числа вычесть из числа, введенного пользователем, число 3 используя ТОЛЬКО побитовые операции.помогите новечку) http://www.cyberforum.ru/cpp-beginners/thread364942.html
C++ Поиск в заданной строке последнего вхождения заданного символа
Помогите написать функцию, которая ищет в заданной строке последнее вхождение заданного символа (char *strrchr(const char *s1, int c)
C++ Программа для обнаружения и коррекции "пачки" ошибок
Доброе время суток! Кто может помочь с реализацией программы для обнаружения и коррекции "пачки" ошибок, которая предусматривает использование взвешенной контрольной суммы (с использованием...
C++ Табуляция http://www.cyberforum.ru/cpp-beginners/thread364897.html
Здравствуйте, помогите пожалуйста написать программу табулирования функции (х0 – начальное значение, хk – конечное значение аргумента, ∆x – прирост аргумента, n – кількість табуляций) при a =...
C++ Вычислить количество и произведение элементов массива, удовлетворяющих условию В одномерном массиве из n вещественных элементов вычислить : 1)количество элементов массива больших С. 2)произведение элементво массива , расположенных после максимального по модулю элемента. подробнее

Показать сообщение отдельно
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176

Не могу в дочернем классе вызвать protected метод - C++

11.10.2011, 22:52. Просмотров 2651. Ответов 11
Метки (Все метки)

Всем привет! Начал писать одну программку, и столкнулся со следующей проблемой: у меня пока 2 класса: MemObject и Vector, где Vector наследует свойства MemObject. Так вот, в классе MemObject есть чисто виртуальный метод _detectMemUse, который вычистляет память, занимаемую объектом MemObject. Фишка в том, что объект класса Vector должен уметь содержать любые объекты класса MemObject, даже ещё неизвестные. Частью этого плана является то, что при вызове метода _detectMemUse для текущего вектора нужно вызвать этот метод для всех внутренних MemObject-ов, причём в зависимости от реального типа внутреннего объекта будет вызываться свой _detectMemUse. Вот с этим вызовом и возникла продлема. Вот фрагмент кода класса Vector:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i8 Vector::_detectMemUse(bool isUpdateMemUse)
{
    i8 memUse=microDetectMemUse();
    if (type==MEM_OBJECT)
    {
        MemObject **tmpObj=(MemObject **)data;
        for (i8 i=0; i<cellsCount; i++)
        {
            if (*tmpObj) memUse+=(**tmpObj)._detectMemUse(isUpdateMemUse);
            tmpObj++;
        }
    }
    if (isUpdateMemUse) this->memUse=memUse;    
    return memUse;
}
А вот фрагмент класса MemObject:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public:
 
    typedef void (*MemControlPointer)(i8,i8);   
    typedef void (*MemErrorPointer)(i8,i8);
 
protected:
 
    //Учёт памяти
    MemControlPointer memControl;
    i8 memUse;
    bool isBlockedMemControl;
    i8 currElemNum;
    virtual void setIsBlockedMemControl(bool val)=0;
    virtual i8 _detectMemUse(bool isUpdateMemUse)=0;
 
    //Ошибка выделения памяти
    MemErrorPointer memError;
Вот что выдаёт компилятор: "error C2248: MemObject::_detectMemUse: невозможно обратиться к protected член, объявленному в классе "MemObject" D:\doc\dev\Visual Studio 2010\VectorTest\VectorTest\Vector.cpp". Так почему я не могу обратиться к protected методу?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru