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

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

09.03.2010, 13:17. Просмотров 1166. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос не линкуется класс с static членами (C++):

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

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

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

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

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

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

7
rangerx
1941 / 1550 / 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 / 1
Регистрация: 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
1941 / 1550 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
09.03.2010, 13:58 #6
а где у меня указатель this? aaa тоже объявлена как статическая!
Да, это я невнимательно посмотрел код...
0
SkyN
1 / 1 / 1
Регистрация: 08.02.2010
Сообщений: 16
10.03.2010, 10:25  [ТС] #7
если я не буду использовать класс A, запись int A::aaa = 0; увеличит программу?
Т.е. будут ли инициализироваться статические члены класса, если сам класс нигде не используется?
0
Evg
Эксперт CАвтор FAQ
18940 / 6901 / 513
Регистрация: 30.03.2009
Сообщений: 19,445
Записей в блоге: 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>...

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

Ошибка с статическими членами класса
Доброго времени суток, форумчане! Недавно пришлось вернуться с С# на С++ и я...

Объявление класса с открытыми членами.
Всем привет! Уважаемые, не проясните ситуацию? В чем здесь ошибка? :)


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

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

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