Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
1

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

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

Класс со статическими членами
Создать класс Alfa таким образом , чтоб при создании первого и уничтожении последнего объекта этого...

Реализовать произвольный пользовательский класс с функциями-членами Put и Show
Создать несколько обьектов. Написать функции: 1) для ввода данных по обьекту(как Put) 2) для...

Создать класс время с данными-членами часы, минуты, секунды
отучилась на программиста уже год, но пока что как-то тяжко с заданиями, тем более с классами, не...

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

Не линкуется проект с Use Unicode Character Set
Такая проблема: 1) Есть проект (dll) в котором объявлен и описан метод класса CMyClass:...

7
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
09.03.2010, 13:40 2
Статические функции ничего не знают об указателе this...
0
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
09.03.2010, 13:43 3
Нужно явно инициализировать aaa добавь строку после класса и перед меином
int A::aaa = 0; // ну или любое другое значение...
1
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
09.03.2010, 13:48  [ТС] 4
а где у меня указатель this? aaa тоже объявлена как статическая!

Добавлено через 4 минуты
Amarted, спасибо! сработало.
0
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
09.03.2010, 13:49 5
*this это указатель кторый есть во всех объектах(его не видно но он есть) на сам объект, то есть на самого себя.
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
09.03.2010, 13:58 6
а где у меня указатель this? aaa тоже объявлена как статическая!
Да, это я невнимательно посмотрел код...
0
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16
10.03.2010, 10:25  [ТС] 7
если я не буду использовать класс A, запись int A::aaa = 0; увеличит программу?
Т.е. будут ли инициализироваться статические члены класса, если сам класс нигде не используется?
0
Evg
Эксперт CАвтор FAQ
19288 / 7147 / 528
Регистрация: 30.03.2009
Сообщений: 19,997
Записей в блоге: 30
10.03.2010, 11:31 8
Цитата Сообщение от SkyN Посмотреть сообщение
если я не буду использовать класс A, запись int A::aaa = 0; увеличит программу?
Т.е. будут ли инициализироваться статические члены класса, если сам класс нигде не используется?
Да. НЕстатические поля - это аналог поля структуры (т.е. относится к типу) - если ты структуры не используешь, то никакой памяти не требуется. А вот статические поля - это уже аналог переменных (хотя сточки зрения синтаксиса выглядит как поле структуры), а потому независимо от использования класса переменная будет создана. При этом описание статического поля внутри класса это есть по сути аналог объявления переменной (т.е. описание extern переменной). Поэтому твой изначальный код ломался на линковке
0
10.03.2010, 11:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2010, 11:31

Реализовать класс "Квадрат" с данными-членами "центр квадрата" и "сторона квадрата"
Объявить класс по приведенному ниже заданию в соответствии с номером варианта и определить для...

Деструктор шаблона описанный в отдельном файле не линкуется. Почему?
Есть такой код: файл "a.h" #include <iostream> template < typename T> class A { public:...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru