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

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

Войти
Регистрация
Восстановить пароль
 
prohp
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 8
#1

Ошибка компиляции - C++

27.02.2013, 23:50. Просмотров 360. Ответов 9
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
class X
{
public:
    static int a;
};
 
void main()
{
    X::a=3;
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
class X
{
public:
    static int a;
    X()
    {
        a=5;
    }
};
void main()
{
        X a;
    std::cout<<a.a;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
class X
{
public:
    static int a;
    static int stat()
    {
        a=5;
        return a;
    }
};
void main()
{
   std::cout<<X::stat();
}
Хочу присвоить значение статической переменной класса a. Пробовал разными способами, ничего не получается.
Везде одни и те же ошибки:

Ошибка 1 error LNK2001: неразрешенный внешний символ ""public: static int X::a" (?a@X@@2HA)" C:\Users\Джамал\documents\visual studio 2012\Projects\unit1\unit1\unit1.obj unit1

Ошибка 2 error LNK1120: неразрешенных внешних элементов: 1 C:\Users\Джамал\documents\visual studio 2012\Projects\unit1\Debug\unit1.exe 1 1 unit1

Компилятор визуал студио экспресс 2012 для десктопа. Ос windows 7 prof.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 23:50     Ошибка компиляции
Посмотрите здесь:

Ошибка компиляции - C++
Написал код на тему шаблоны, но появились проблемы с созданием перегруженного оператора, так же не могу создать динамический массив...

Ошибка компиляции - C++
int max,min,n; cout &lt;&lt; n; int min = 5; // тут выдает ошибку, что не так? int max = n / 5 * 5; int sum = (min + max) * ((max - min)...

Ошибка пр компиляции - C++
cin &gt;&gt; worknumber; int masivv = {125,123}; Dev-C++ выдаёт такую ошибку variable-sized object 'masivv' may not be initialized

Ошибка компиляции - C++
конвертировал проект в vs 2010 и вот с этим не могу бороться ::( 1&gt;src\cornerstonefvmodel\SizingControlBar.cpp(41): error C2440:...

Ошибка компиляции - C++
У друга проект не запускается (он работает на 10 студии), у меня в 12 такой же набор привел к успеху. Ошибки не пойму. Вот код(извиняюсь...

Ошибка компиляции - C++
Не могу скомпелировать код: #include &lt;iostream.h&gt; int main() { string s = &quot;&quot;; system(&quot;pause &gt;&gt; void&quot;); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
28.02.2013, 00:02     Ошибка компиляции #2
Цитата Сообщение от prohp Посмотреть сообщение
Хочу присвоить значение статической переменной класса a.
в .cpp
C++
1
int A::a=0;
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
28.02.2013, 00:05     Ошибка компиляции #3
Нужно объявить статическую переменную в глобальной зоне (области данных):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
  
 class X
 {
     public:
         static int a;
 };
  
 int X::a;
 
 int main()
 {   
     X::a = 5;
 }
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 00:06     Ошибка компиляции #4
Цитата Сообщение от prohp Посмотреть сообщение
Хочу присвоить значение статической переменной класса a.
Присваивайте вне объявления класса.
prohp
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 8
28.02.2013, 00:40  [ТС]     Ошибка компиляции #5
Когда я пишу вне функции main() int X::a=5, то все нормально. А вот когда я пишу прямо в main
C++
1
int X::a=5
, то компилятор жалуется на область видимости, но ведь я ему указываю через :: куда смотреть. Почему такое происходит?
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
28.02.2013, 00:48     Ошибка компиляции #6
Потому что переменная определена с ключевым словом static хранит своё значение, там-же где и глобальные объекты: в области данных, поэтому там их и нужно объявлять. Такова особенность синтаксиса языка, и никуда не денешься

Добавлено через 2 минуты
Во всяком случаи это справедливо к статическим объектам класса...
prohp
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 8
28.02.2013, 00:55  [ТС]     Ошибка компиляции #7
во во, только к статическим объектам. логики просто не вижу в том, чтобы объявлять еще раз глобальную переменную, которая уже есть в классе. Например, если бы эта переменная не была бы статической, то я мог бы спокойно манипулировать с ней через объект и мне не нужно было бы объявлять эту переменную глобально перед main.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 01:10     Ошибка компиляции #8
Цитата Сообщение от prohp Посмотреть сообщение
Например, если бы эта переменная не была бы статической, то я мог бы спокойно манипулировать с ней через объект и мне не нужно было бы объявлять эту переменную глобально перед main.
И у каждого объекта была бы своя, а статическая переменная класса у всех объектов класса одна. Для чего и объявляется так (содержится не в объекте класса, а отдельно).
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
28.02.2013, 01:13     Ошибка компиляции #9
Цитата Сообщение от prohp Посмотреть сообщение
во во, только к статическим объектам. логики просто не вижу в том, чтобы объявлять еще раз глобальную переменную, которая уже есть в классе. Например, если бы эта переменная не была бы статической, то я мог бы спокойно манипулировать с ней через объект и мне не нужно было бы объявлять эту переменную глобально перед main.
Что значит нет логики? Логика следующая. Эта переменная и есть глобальная. Это не элемент(поле) класса. Это "глобальная" переменная, отличающаяся от других глобальных лишь тем, что привязана к классу Х. И обращаться к ней надо X::a. А расположена она глобально.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 12:00     Ошибка компиляции
Еще ссылки по теме:

С++ Ошибка компиляции - C++
Здравствуйте! Пишу скрипт, очень большой. Visual Studio 2013(когда я его компилирую) выполнает его до 3/4. После этого далше не...

Ошибка компиляции - C++
Здравствуйте учу С++ по книге Дейтела, вот возникла ошибка компиляции программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Ошибка компиляции - C++
Здравствуйте!При компиляции программы появляется данная ошибка. Подскажите пожалуйста, из за чего возникает данная проблема и как её...

Ошибка компиляции - C++
Хм,начал компилить первые наброски курсача получил непонятную для меня ошибку( прошу помощи BetaInterface.obj : error LNK2019:...


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

Или воспользуйтесь поиском по форуму:
prohp
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 8
28.02.2013, 12:00  [ТС]     Ошибка компиляции #10
спасибо всем за ответы
Yandex
Объявления
28.02.2013, 12:00     Ошибка компиляции
Ответ Создать тему
Опции темы

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