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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
garjo_099
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 31
#1

Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" - C++

09.04.2014, 00:39. Просмотров 1580. Ответов 23
Метки нет (Все метки)

Всем доброго времени суток.
Изучаю С++ по Шпаку и по урокам на сайте
Кликните здесь для просмотра всего текста
cppstudio.com
, предварительно хорошо ознакомившись с ассемблером...
Со всеми темами прорываюсь вперед без особых затруднений, дошел до изучения классов, начали появляться вопросы, вот решил найти себе пристанище для ответов.
По первому же запросу в гугле попал сюда =)
Ну да ладно...вообщем плохо разобрался со статической переменной static, точней понимаю, что она создаётся один раз, содержит последнее, внесённое в неё значение... а дальше, работа с классами и оператором расширения области действия :: очень запутался...

На данный момент вот такая проблема.

Visual studio 2013 выдаёт такие ошибки.

Мои догадки:
-из-за того, что интерфейс и реализация в одном файле...
-из-за компилятора, вставляю стандартный код, который был приведён для примера, выдаёт такие же ошибки.


Ошибка 1 error LNK2001: неразрешенный внешний символ ""private: static int AB::a" (?a@AB@@0HA)" C:\Users\garjo\Documents\Visual Studio 2013\Projects\Проект68\Проект68\Исходный код.obj Проект68

Ошибка 2 error LNK2001: неразрешенный внешний символ ""private: static int AB::b" (?b@AB@@0HA)" C:\Users\garjo\Documents\Visual Studio 2013\Projects\Проект68\Проект68\Исходный код.obj Проект68


Ошибка 3 error LNK1120: неразрешенных внешних элементов: 2 C:\Users\garjo\Documents\Visual Studio 2013\Projects\Проект68\Debug\Проект68.exe Проект68
при компиляции этого кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
 
using namespace std;
 
class AB //создаём класс 
{
private:
    static int a;
    static int b;
 
public:
    AB()
    {
        a = 1;
        b = 1;
        cout << "Тут сработал конструктор" << endl;//и здесь же их отобразим на экран
        cout << "a = " << a << endl;
        cout << "b = " << b << endl << endl;
    }
 
    void setAB()
    {
        cout << "Введите целое число а: ";
        cin >> a;
        cout << "Введите целое число b: ";
        cin >> b;
    }
 
    void getAB()
    {
        cout << "a = " << a << endl;
        cout << "b = " << b << endl << endl;
    }
 
    /*~AB() // это деструктор. не будем заставлять его чистить память, пусть просто покажет где он сработал
    {
        cout << "Тут сработал деструктор" << endl;
        system("pause");
 
    }*/
};
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    AB obj1; //сработал конструктор
 
    obj1.getAB(); //для явной проверки
    obj1.setAB();   //присвоим новые значения переменным
    obj1.getAB();   //и выведем их на экран
 
    AB obj2;
    obj2.getAB;
    obj2.setAB;
    obj2.getAB;
 
    system("pause");
    return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 00:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" (C++):

Не могу убрать ошибку: "error LNK2001: неразрешенный внешний символ" - C++
здравствуйте весь интернет уже облазил , ни где похожего найти не могу . overview.obj : error LNK2001: неразрешенный внешний символ...

Исправить ошибку "LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup" - C++
#include &quot;stdafx.h&quot; #include &quot;расчет.h&quot; #include &quot;conio.h&quot; #include &lt;windows.h&gt; #include &lt;commctrl.h&gt; #include &lt;iostream&gt; ...

Подскажите почему может появляться ошибка: "неразрешенный внешний символ "_SDL_..."" - C++
Привет всем =) Скажите пожалуйста почему у меня пишет: 1&gt;SDL.obj : error LNK2001: неразрешенный внешний символ &quot;_SDL_CreateCursor&quot; ...

Error LNK2019: "ссылка на неразрешенный внешний символ _main" - C++
1&gt;MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup ...

Циклы с выключателем и ошибка "ссылка на неразрешенный внешний символ" - C++
код такой получился main #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; using namespace std; double...

Ошибка "LNK2019 ссылка на неразрешенный внешний символ" - C++
допустим есть файл A.h в котором записано следующее template &lt;typename T&gt; class A { public: A(); }; и есть файл A.cpp ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
garjo_099
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 31
10.04.2014, 10:54  [ТС] #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Код C++
1
(cin >> stop).get();
Повторный ввод строки gets_s!
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 11:00 #17
Цитата Сообщение от garjo_099 Посмотреть сообщение
Повторный ввод строки gets_s!
И что?
garjo_099
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 31
10.04.2014, 11:05  [ТС] #18
alsav22, ты вводишь дату, ввёл неправильно, цикл спрашивает ещё будете вводить или нет, если да то уже не срабатывает ввод даты, а опять же к этому месту выбора в цикле, скомпилируй код и просто посмотри
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 11:42 #19
Цитата Сообщение от garjo_099 Посмотреть сообщение
скомпилируй код и просто посмотри
Оно мне надо? Вопрос был такой:
Цитата Сообщение от garjo_099 Посмотреть сообщение
не запрашивает повторный ввод
Сейчас запрашивает?
Цитата Сообщение от garjo_099 Посмотреть сообщение
Повторный ввод строки gets_s!
garjo_099
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 31
10.04.2014, 11:51  [ТС] #20
Да. Можно объяснить почему без добавления функции get() не работало. А с функцией, что? не подскажите?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 11:59 #21
Цитата Сообщение от garjo_099 Посмотреть сообщение
Можно объяснить почему без добавления функции get() не работало.
После ввода через cin >> в потоке остаётся '\n', его нужно убрать (get()), иначе gets_s() читает его первым и код идёт дальше, без остановки на ввод.

Добавлено через 3 минуты
И разберитесь с currentdate и ptrcurrentdate, а то там - не поймёшь что.
garjo_099
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 31
10.04.2014, 12:17  [ТС] #22
alsav22, указатель для того, чтобы передавать его в функцию, но после присваивания значения строки, проверяю на вывод его, а там что попало.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 12:42 #23
Цитата Сообщение от garjo_099 Посмотреть сообщение
но после присваивания значения строки, проверяю на вывод его, а там что попало.
А что там должно быть, если читаете в currentdate, а выводите ptrcurrentdate? Сравниваете символы из currentdate, а в функцию передаёте ptrcurrentdate. Повторю:
Цитата Сообщение от alsav22 Посмотреть сообщение
И разберитесь с currentdate и ptrcurrentdate, а то там - не поймёшь что.
Добавлено через 17 минут
Цитата Сообщение от garjo_099 Посмотреть сообщение
Можно объяснить почему без добавления функции get() не работало.
Объяснил?
anonymous_
6 / 6 / 1
Регистрация: 21.11.2013
Сообщений: 22
11.04.2014, 00:56 #24
Тут написано что за функция gmtime http://www.cplusplus.com/reference/ctime/gmtime/
а тут какие поля структуры tm http://www.cplusplus.com/reference/ctime/tm/
ну и сам пример в архиве
Вложения
Тип файла: rar date.rar (1.6 Кб, 4 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 00:56
Привет! Вот еще темы с ответами:

Ошибка "ссылка на неразрешенный внешний символ _main" - C++
&gt;MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup ...

Error LNK2001: неразрешенный внешний символ "_main" - C++
1&gt;MSVCRT.lib(crtexe.obj) : error LNK2001: неразрешенный внешний символ &quot;_main&quot; Что это такое и как его убрать?

Класс "Зачетка": Ссылка на неразрешенный внешний символ - C++
Практиковался( Visual Studio 2012) в написании программы и выдаёт вот такую ошибку 1&gt;MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на...

Обработка ошибок "Ссылка на неразрешенный внешний символ" - C++
взял код из сети по работе с WinPCap. откомпилить его не могу. ошибки валятся. появляются только в тот момент когда со всеми error'ами...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.04.2014, 00:56
Ответ Создать тему
Опции темы

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