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

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

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

Ошибка: LNK2001: неразрешенный внешний символ - C++

05.02.2013, 17:42. Просмотров 753. Ответов 4
Метки нет (Все метки)

Есть простенький класс:
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
class Ant {
public:
    Ant(unsigned short pos, bool direct):
        position(pos),
        direction(direct) { antNum++; }
    Ant() { length = 0; antNum = 0; }
    ~Ant() { antNum--; }
    void moveStep();
    void setProps(short pos, bool direct){
        position = pos;
        direction = direct;
    }
    static int length;
    static int antNum;
private:
    short position;
    bool direction;
};
void Ant::moveStep() {
    if(direction) position++;
    else position--;
    if(position > length || position < 0)
        delete this;
}
При компиляции кода с этим классом появляются непонятные ошибки:
Код
main.cpp.obj : error LNK2001: неразрешенный внешний символ ""public: static int Ant::length" (?length@Ant@@2HA)"
main.cpp.obj : error LNK2001: неразрешенный внешний символ ""public: static int Ant::antNum" (?antNum@Ant@@2HA)"
ants.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
Как их исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2013, 17:42     Ошибка: LNK2001: неразрешенный внешний символ
Посмотрите здесь:

C++ Error LNK2001: неразрешенный внешний символ
C++ Error LNK2001: неразрешенный внешний символ
Классы и методы, error LNK2001: неразрешенный внешний символ C++
C++ Error LNK2001: неразрешенный внешний символ
LNK2001: неразрешенный внешний символ C++
C++ Ошибка линковки LNK2001. Неразрешенный внешний символ
C++ Error LNK2001: неразрешенный внешний символ
C++ Ошибка "LNK2001: неразрешенный внешний символ"
C++ Ошибка: "error LNK2001: неразрешенный внешний символ" при реализации шаблонного синглтона
Error LNK2001: неразрешенный внешний символ C++
Error LNK2001: неразрешенный внешний символ C++
Error LNK2001: неразрешенный внешний символ "_main" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6513 / 4979 / 460
Регистрация: 14.02.2011
Сообщений: 16,488
05.02.2013, 17:48     Ошибка: LNK2001: неразрешенный внешний символ #2
Цитата Сообщение от ishi0 Посмотреть сообщение
Ant() { length = 0; antNum = 0; }
Цитата Сообщение от ishi0 Посмотреть сообщение
static int length;
* * static int antNum;
А ты прямо так в конструкторе присваиваешь значения статическим элементам?
нехорошо это

почитай про статические члены и как их нужно инициализировать
ishi0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 3
06.02.2013, 17:32  [ТС]     Ошибка: LNK2001: неразрешенный внешний символ #3
ValeryS, немного изменил код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Ant {
public:
    Ant(short pos, bool direct):
        position(pos),
        direction(direct) { antNum++; }
    Ant() {}
    ~Ant() { antNum--; }
    void moveStep();
    void setProps(short pos, bool direct){
        position = pos;
        direction = direct;
    }
    static short length;
    static short antNum;
private:
    short position;
    bool direction;
};
переменные инициализируются до создания любых объектов класса.
ошибки остались.
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,972
Записей в блоге: 2
Завершенные тесты: 1
06.02.2013, 20:08     Ошибка: LNK2001: неразрешенный внешний символ #4
В .cpp файле:
C++
1
2
int Ant::length = 0;
int Ant::antNum = 0;
ishi0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 3
07.02.2013, 16:14  [ТС]     Ошибка: LNK2001: неразрешенный внешний символ #5
Croessmah, если добавить эти строчки, компилятор пишет о переопределении.
Yandex
Объявления
07.02.2013, 16:14     Ошибка: LNK2001: неразрешенный внешний символ
Ответ Создать тему
Опции темы

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