Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
Есть такой код: Код: plaintext 1. 2. 3. 4. 5. 6. Всё компилируетcя и собирается нормально. Но мне нужно использовать myWindowHWND в MyFunction. Для этого он должен быть статическим. Если пишу так Код: plaintext 1. то получаю ошибку: error LNK2001: неразрешенный внешний символ ""private: static struct HWND__ * CMyClass::myWindowHWND" (?mainHWND@CMyClass@@0PAUHWND__@@A)" Смысл сообщения мне понятен, непонятно, как это связано с объявлением static? И как сделать так, чтобы я мог использовать myWindowHWND в MyFunction? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:54 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
http://en.cppreference.com/w/cpp/language/static Где-то дальше должно быть Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:08 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
Abejon, Если ты объявишь myWindowHWND статической, то в каждом экземпляре класса это будет одна и та же сущность, то есть все классы будут разделять один экземпляр этой переменной. Сильно сомневаюсь, что так и задумано. Поэтому функция MyFunction должна иметь возможность получать адрес конкретного экземпляра класса CMyClass, а дальше уже обращаться к его индивидуальной переменной myWindowHWND этого экземпляра Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:17 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
Cerebrum, нет. именно так и было задумано. Нельзя в static-функции использовать не static-члены класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 10:28 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
Dima T, да, спасибо, я нашёл ответ. И лучше это объявление делать в .cpp файле, а не в .h - чтобы не было множественного включения в проект этого объявления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 10:29 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
AbejonНельзя в static-функции использовать не static-члены класса. Можно. Для этого нужно в функцию передать указатель на объект. Обычно так делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 10:33 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
AbejonВсё компилируетcя и собирается нормально. Но мне нужно использовать myWindowHWND в MyFunction. Для этого он должен быть статическим. Нет, наоборот, для этого ты должен передавать в функцию ещё один параметр, HWND. Либо ещё вариант -- сделать функцию НЕ статической. Abejon Если пишу так Код: plaintext 1. то получаю ошибку: error LNK2001: неразрешенный внешний символ ""private: static struct HWND__ * CMyClass::myWindowHWND" (?mainHWND@CMyClass@@0PAUHWND__@@A)" Смысл сообщения мне понятен, непонятно, как это связано с объявлением static? Напрямую связано. Объявление статической переменной класса не является определением, ты должен дать определение сам, руками, явным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:20 |
|
||
|
Объявление статического члена класса - ошибка при сборке - C++ WinAPI
|
|||
|---|---|---|---|
|
#18+
AbejonЕсть такой код: Код: plaintext 1. 2. 3. 4. 5. А с чего ты решил (или кто-то решил), что эта функция обязательно должна быть static в классе CMyClass? Просто такое ощущение, что ты не знаешь совсем, что ты делаешь, и зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39496501&tid=2018114]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 257ms |

| 0 / 0 |
