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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
#1

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

09.03.2010, 13:17. Просмотров 1125. Ответов 7
Метки нет (Все метки)

не линкуется класс с 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;
}
В чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2010, 13:17     не линкуется класс с static членами
Посмотрите здесь:

Заполнить массив первыми 12 членами последовательности Фиббоначи. C++
C++ Создать класс время с данными-членами часы, минуты, секунды
Cумма элементов между членами массива C++
Объявление класса с открытыми членами. C++
Не линкуется проект с Use Unicode Character Set C++
Ошибка с статическими членами класса C++
Деструктор шаблона описанный в отдельном файле не линкуется. Почему? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
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
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
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++ Реализовать произвольный пользовательский класс с функциями-членами Put и Show
Заполнение массива членами арифметической прогрессии C++
Заполнение массива членами арифметической прогрессии C++

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

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

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