Форум программистов, компьютерный форум CyberForum.ru

не линкуется класс с static членами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
09.03.2010, 13:17     не линкуется класс с static членами #1
не линкуется класс с static членами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A
{
public:
    static int get(){return aaa;}
    A(){};
    ~A(){};
private:
    static int aaa;
};
 
int main(int argc, const char *argv[])
{
    int a = A::get();
    return 0;
}
В чем проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
09.03.2010, 13:40     не линкуется класс с static членами #2
Статические функции ничего не знают об указателе this...
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
09.03.2010, 13:43     не линкуется класс с static членами #3
Нужно явно инициализировать aaa добавь строку после класса и перед меином
int A::aaa = 0; // ну или любое другое значение...
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
09.03.2010, 13:48  [ТС]     не линкуется класс с static членами #4
а где у меня указатель this? aaa тоже объявлена как статическая!

Добавлено через 4 минуты
Amarted, спасибо! сработало.
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
09.03.2010, 13:49     не линкуется класс с static членами #5
*this это указатель кторый есть во всех объектах(его не видно но он есть) на сам объект, то есть на самого себя.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
09.03.2010, 13:58     не линкуется класс с static членами #6
а где у меня указатель this? aaa тоже объявлена как статическая!
Да, это я невнимательно посмотрел код...
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
10.03.2010, 10:25  [ТС]     не линкуется класс с static членами #7
если я не буду использовать класс A, запись int A::aaa = 0; увеличит программу?
Т.е. будут ли инициализироваться статические члены класса, если сам класс нигде не используется?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2010, 11:31     не линкуется класс с static членами
Еще ссылки по теме:

Ошибка с статическими членами класса C++
Деструктор шаблона описанный в отдельном файле не линкуется. Почему? C++
Определить класс со следующими данными-членами : фамилия пассажира, номер рейса, стоимость билета, вес багажа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
10.03.2010, 11:31     не линкуется класс с static членами #8
Цитата Сообщение от SkyN Посмотреть сообщение
если я не буду использовать класс A, запись int A::aaa = 0; увеличит программу?
Т.е. будут ли инициализироваться статические члены класса, если сам класс нигде не используется?
Да. НЕстатические поля - это аналог поля структуры (т.е. относится к типу) - если ты структуры не используешь, то никакой памяти не требуется. А вот статические поля - это уже аналог переменных (хотя сточки зрения синтаксиса выглядит как поле структуры), а потому независимо от использования класса переменная будет создана. При этом описание статического поля внутри класса это есть по сути аналог объявления переменной (т.е. описание extern переменной). Поэтому твой изначальный код ломался на линковке
Yandex
Объявления
10.03.2010, 11:31     не линкуется класс с static членами
Ответ Создать тему
Опции темы

Текущее время: 05:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru