Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор присваивания в заголовочном файле, Должно, кажется, работать... 
:(
    Опции темы
0x07L
Дата 2.7.2006, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 10.6.2006
Где: Москва

Репутация: нет
Всего: 5



Есть заголовочный файл. В заголовочном файле есть структура KeyStruct. Вот такая:
Код

struct KeyStruct
{
    unsigned char VirtualCode;
    BOOL Extended;

    KeyStruct()
    {
    }

    KeyStruct(const KeyStruct & copy)
    : VirtualCode(copy.VirtualCode), Extended(copy.Extended)
    {
    }

    KeyStruct(int virtualCode, BOOL extended)
    : VirtualCode(virtualCode), Extended(extended)
    {
    }

    KeyStruct & operator= (const KeyStruct & copy)
    : VirtualCode(copy.VirtualCode), Extended(copy.Extended)
    {
        //this->VirtualCode = copy.VirtualCode;
        //this->Extended = copy.Extended;
        return *this;
    }
};


Проблема в том, что на этапе компиляции я получаю следующую ошибку:
Код

error C2327: 'KeyStruct::VirtualCode' : is not a type name, static, or enumerator


Что в моем коде не так, я никак не пойму. Может, голова в позднее время плохо соображает, а может, тут действительно что-то не так. В общем, помогите пожалуйста.

Кстати, если раскомментировать (есть такое слово в русском языке?) строчку [this->VirtualCode = ...]
и убрать [VirtualCode(copy.VirtualCode), ], то появляется та же ошибка, только применительно к Extended.

А если список инициализации вообще убрать и снять все комментарии, все OK. 

Это сообщение отредактировал(а) 0x07L - 2.7.2006, 23:14
PM MAIL   Вверх
Xenon
Дата 2.7.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Я не понял, а почему у структруы методы? Это же уже, даже логически - класс. 


--------------------
user posted image  
PM MAIL   Вверх
maxim1000
Дата 3.7.2006, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата(0x07L @  2.7.2006,  22:10 Найти цитируемый пост)
    KeyStruct & operator= (const KeyStruct & copy)
    : VirtualCode(copy.VirtualCode), Extended(copy.Extended)

operator= - метод
а списк инициализации (после двоеточия) используются только в конструкторах
нужно в самом теле делать присваивание 


--------------------
qqq
PM WWW   Вверх
Earnest
Дата 3.7.2006, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(0x07L @  3.7.2006,  00:10 Найти цитируемый пост)
А если список инициализации вообще убрать и снять все комментарии, все OK. 

Именно так и надо делать.
 


--------------------
...
PM   Вверх
0x07L
Дата 3.7.2006, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 10.6.2006
Где: Москва

Репутация: нет
Всего: 5



Я так и знал. Точно, голова плохо соображала. В следующий раз буду оставлять такие проблемы на утро.

А структурами я называю все классы с открытыми членами. Конструкторы и злосчастный оператор присваивания здесь служат только для упрощения доступа к данным. Поэтому для меня это ближе к структуре, чем к классу. Может быть, в современном мире так делать не принято? 
PM MAIL   Вверх
zss
Дата 3.7.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



Цитата(XenonSk @  2.7.2006,  23:18 Найти цитируемый пост)
Я не понял, а почему у структруы методы? Это же уже, даже логически - класс.  


Цитата(0x07L @  3.7.2006,  08:07 Найти цитируемый пост)
Поэтому для меня это ближе к структуре, чем к классу. Может быть, в современном мире так делать не принято?  


разница между структурой и классом только в области видимости - больше ничем 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.