Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > С2248 cannot access private member...


Автор: EKoshelev 10.11.2011, 19:45
Есть класс:

Код

class CRotator 
{
    CRotator() {};
    CRotator(const CRotator &rotator) {};
    CRotator(CRandClass* label = 0) {};

    CRotator& operator=(const CRotator &rotate) {return *this;};
};


Когда создаю его экземпляр:

Код

    CRandClass rc;
    CRotator* rotator;
    rotator = new CRotator(&rc);


возникает ошибка:

.\exampleall.cpp(24) : error C2248: 'CRotator::CRotator' : cannot access private member declared in class 'CRotator'
        d:\documents and settings\женя\мои документы\visual studio 2008\projects\exampleall\exampleall\exampleall.h(15) : see declaration of 'CRotator::CRotator'
        d:\documents and settings\женя\мои документы\visual studio 2008\projects\exampleall\exampleall\exampleall.h(12) : see declaration of 'CRotator'

По интернетам рылся - ничего не нашел. Подскажите в чем причина.

Автор: boostcoder 10.11.2011, 19:53
Код

class CRotator 
{
public:
    CRotator() {};
    CRotator(const CRotator &rotator) {};
    CRotator(CRandClass* label = 0) {};
    CRotator& operator=(const CRotator &rotate) {return *this;};
};


Добавлено @ 19:53
в с++ все члены по умолчанию приватные.

Добавлено @ 19:55
я вообще class не использую. всегда struct. разницы-то нет никакой, за исключением того, что у структур члены публичные.
Код

struct CRotator {
    CRotator() {};
    CRotator(const CRotator &rotator) {};
    CRotator(CRandClass* label = 0) {};
    CRotator& operator=(const CRotator &rotate) {return *this;};
};

Автор: EKoshelev 10.11.2011, 21:09
УЖОС!!!  smile   ЭТО УЖОС!!!
Я с этой ошибкой два дня сидел. А тут такая хрень!!!

Спасибо!
(век живи, век учись и дураком помрёшь)

Автор: bsa 11.11.2011, 10:23
Цитата(boostcoder @  10.11.2011,  20:53 Найти цитируемый пост)
я вообще class не использую. всегда struct.

а зря. как бы самодокументация кода. если класс, то сложный объект, если struct, то POD...
Цитата(EKoshelev @  10.11.2011,  22:09 Найти цитируемый пост)
Я с этой ошибкой два дня сидел. А тут такая хрень!!!

Обычно гугл по ошибке компилятора за секунду ответ дает...

Автор: EKoshelev 16.11.2011, 16:54
bsa,
А он и отвечал за секунду, но вот об этом:
Цитата

в с++ все члены по умолчанию приватные.

он даже не намекал. А я а) не знал, б) даже не предположил, что дело в этом.

Автор: bsa 16.11.2011, 17:28
EKoshelev, бусткодер тут немного ошибся, не "в с++", а "в классах".
А если разницы вообще нет, тогда зачем бы вводили класс?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)