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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
garjo_099
 Аватар для garjo_099
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 31
09.04.2014, 00:39     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" #1
Всем доброго времени суток.
Изучаю С++ по Шпаку и по урокам на сайте
Кликните здесь для просмотра всего текста
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: неразрешенный внешний символ "_WinMain@16"
Подскажите почему может появляться ошибка: "неразрешенный внешний символ "_SDL_..."" C++
Странная ошибка - "ссылка на неразрешенный внешний символ" C++
C++ обработка ошибок. "ссылка на неразрешенный внешний символ"
Циклы с выключателем и ошибка "ссылка на неразрешенный внешний символ" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 11:59     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" #21
Цитата Сообщение от garjo_099 Посмотреть сообщение
Можно объяснить почему без добавления функции get() не работало.
После ввода через cin >> в потоке остаётся '\n', его нужно убрать (get()), иначе gets_s() читает его первым и код идёт дальше, без остановки на ввод.

Добавлено через 3 минуты
И разберитесь с currentdate и ptrcurrentdate, а то там - не поймёшь что.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
garjo_099
 Аватар для garjo_099
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 31
10.04.2014, 12:17  [ТС]     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" #22
alsav22, указатель для того, чтобы передавать его в функцию, но после присваивания значения строки, проверяю на вывод его, а там что попало.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 12:42     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" #23
Цитата Сообщение от garjo_099 Посмотреть сообщение
но после присваивания значения строки, проверяю на вывод его, а там что попало.
А что там должно быть, если читаете в currentdate, а выводите ptrcurrentdate? Сравниваете символы из currentdate, а в функцию передаёте ptrcurrentdate. Повторю:
Цитата Сообщение от alsav22 Посмотреть сообщение
И разберитесь с currentdate и ptrcurrentdate, а то там - не поймёшь что.
Добавлено через 17 минут
Цитата Сообщение от garjo_099 Посмотреть сообщение
Можно объяснить почему без добавления функции get() не работало.
Объяснил?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 00:56     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ"
Еще ссылки по теме:

C++ Error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
C++ Дружественная функция шаблон и ошибка "Ссылка на неразрешенный внешний символ"
Класс "Зачетка": Ссылка на неразрешенный внешний символ C++

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

Или воспользуйтесь поиском по форуму:
anonymous_
6 / 6 / 1
Регистрация: 21.11.2013
Сообщений: 22
11.04.2014, 00:56     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ" #24
Тут написано что за функция gmtime http://www.cplusplus.com/reference/ctime/gmtime/
а тут какие поля структуры tm http://www.cplusplus.com/reference/ctime/tm/
ну и сам пример в архиве
Вложения
Тип файла: rar date.rar (1.6 Кб, 4 просмотров)
Yandex
Объявления
11.04.2014, 00:56     Классы.Ключевое слово static - выдает ошибку "неразрешенный внешний символ"
Ответ Создать тему
Опции темы

Текущее время: 03:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru