Re[2]: C++ удивил (MSVC 2008)
От: nen777w  
Дата: 01.11.09 19:53
Оценка:
А>>Не пойму почему так, ведь по сути один и тот же класс.
N>Так ты же его извне вызываешь.

Я почему то всегда думал что для одного и того же типа правила видимости рояля не играют.
Оказывается что уже в унаследованных классах это правила не работают.

Ведь так всё ок получается:

class   base
{
private:
    base*   parent;
public:
    base*   get_parent() { return parent; }

     Вот так работает это понятно....
    void    test( base* p ) {
        p->test_protected();
    }

protected:
    void    test_protected() {};
};

class   derived_A : public base
{
public:
    void    test() {
        test_protected();

        // можно такой хак сделать, но тоже не красиво
        dynamic_cast<derived_A*>(get_parent())->test_protected();
    }
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.