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

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

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

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

09.03.2010, 13:17. Просмотров 1142. Ответов 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 членами
Посмотрите здесь:

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

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

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

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

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

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

Ошибка с статическими членами класса - C++
Доброго времени суток, форумчане! Недавно пришлось вернуться с С# на С++ и я тут же заметил что я все забыл( Итак по сути: Есть...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
09.03.2010, 13:40     не линкуется класс с static членами #2
Статические функции ничего не знают об указателе this...
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
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
09.03.2010, 13:49     не линкуется класс с static членами #5
*this это указатель кторый есть во всех объектах(его не видно но он есть) на сам объект, то есть на самого себя.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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++
Напишите программу, которая заполняет массив из N элементов членами арифметической прогрессии с начальным значением X и разностью D в...

Заполнение массива членами арифметической прогрессии - C++
Напишите программу, которая заполняет массив из N элементов членами арифметической прогрессии с начальным значением X и разностью D . ...

Cумма элементов между членами массива - C++
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) {int k1,k2,j,s; double...

Заполнить массив первыми 12 членами последовательности Фиббоначи. - C++
Заполнить массив первыми 12 членами последовательности Фиббоначи. #include <iostream.h> #include <conio.h> #include <math.h> ...

Шаблон класса вектор с двумя членами-данными - C++
Здравствуйте Уважаемые. Нужна Ваша помощь в реализации программы: Построить шаблон класса Vector. Определите класс Record (запись) с...


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

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

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