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

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

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

Ошибка компилятора: Неразрешенный внешний символ. - C++

31.10.2010, 12:46. Просмотров 1019. Ответов 8
Метки нет (Все метки)

При попытке скомпилировать в MSVC 2008 это:

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
#include "stdafx.h"
 
class Date{
    int d,m,y; 
    static Date default_date;
public:
    Date(int dd=0,int mm=0,int yy=0);
    static void set_default(int,int,int);
};
 
 
Date::Date(int dd,int mm,int yy){
    d=dd?dd:default_date.d;
    m=mm?mm:default_date.m;
    y=yy?yy:default_date.y;
}
 
void Date::set_default(int d,int m,int y){
    default_date=Date(d,m,y);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

Говорит что:


Код
error LNK2001: неразрешенный внешний символ ""private: static class Date Date::default_date" (?default_date@Date@@0V1@A)"	CPP_TEST_1.obj	CPP_TEST_1

Подскажите, где ковырять надо?..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2010, 12:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка компилятора: Неразрешенный внешний символ. (C++):

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

Ошибка. Ссылка на неразрешенный внешний символ - C++
Здравствуйте. Ошибка такая: LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)"...

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

Ошибка 2019 неразрешенный внешний символ - C++
// MyExecRefsDll.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "MathFuncsDll.h" ...

Ошибка: ссылка на неразрешенный внешний символ - C++
Уже час сижу не могу понять в чём дело. Получаю такие ошибки при компиляции: Файл интерфейса класса mystack.h: ...

Ошибка: LNK2001: неразрешенный внешний символ - C++
Есть простенький класс: class Ant { public: Ant(unsigned short pos, bool direct): position(pos), ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
31.10.2010, 12:54 #2
C++
1
Date Date::default_date;
0
aferook
3 / 3 / 0
Регистрация: 31.10.2010
Сообщений: 13
31.10.2010, 14:36  [ТС] #3
Цитата Сообщение от rangerx Посмотреть сообщение
C++
1
Date Date::default_date;
То есть так?

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
#include "stdafx.h"
 
class Date{
        int d,m,y; 
        static Date default_date;
public:
        Date(int dd=0,int mm=0,int yy=0);
        static void set_default(int,int,int);
};
 
 
Date::Date(int dd,int mm,int yy){
        d=dd?dd:default_date.d;
        m=mm?mm:default_date.m;
        y=yy?yy:default_date.y;
}
 
void Date::set_default(int d,int m,int y){
        Date::default_date=Date(d,m,y);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
        return 0;
}
Тоже самое говорит.
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
31.10.2010, 14:46 #4
Цитата Сообщение от rangerx Посмотреть сообщение
C++
1
Date Date::default_date;
Кэп?

Если серьезно, то я не знаю реально ли такое сделать, объект класса Date содержит объект класса Date, который содержит объект класса Date, который .... и т.д.
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
31.10.2010, 16:02 #5
Бьерн Страуструп - Язык программирования С++. Статические члены

Добавлено через 9 минут
Кстати приведённый aferook пример как раз из "Язык программирования C++. Специальное издание".
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
31.10.2010, 16:52 #6
Так там статический указатель, а ТС пытается создать статический объект.
Хотя могу в корне ошибаться!
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
31.10.2010, 18:00 #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так там статический указатель, а ТС пытается создать статический объект.
Цитата Сообщение от rangerx Посмотреть сообщение
Кстати приведённый aferook пример как раз из "Язык программирования C++. Специальное издание"
.....
0
aferook
3 / 3 / 0
Регистрация: 31.10.2010
Сообщений: 13
31.10.2010, 18:03  [ТС] #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так там статический указатель, а ТС пытается создать статический объект.
Хотя могу в корне ошибаться!
Нет, пример в книге говорит не о указателе, а именно о члене класса.

Цитата Сообщение от rangerx Посмотреть сообщение
Бьерн Страуструп - Язык программирования С++. Статические члены

Добавлено через 9 минут
Кстати приведённый aferook пример как раз из "Язык программирования C++. Специальное издание".
Да, пример от туда. Постепенно с решаемой задачи дошел до Страуструпа.
Приведенный пример не работает на MSVC. На Builder'e все идет на ура. Значит проблема в самом компиляторе. Думаю на линкер. Сбрасывал все настройки VC (методом devenv.exe /resetuserdata) - не помогло. У кого-нить есть мысли?
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
31.10.2010, 19:48 #9
Вот так:
C++
1
2
3
4
5
6
7
8
9
10
class Date{
        int d,m,y; 
        static Date default_date;
public:
        Date(int dd=0,int mm=0,int yy=0);
        static void set_default(int,int,int);
};
 
Date Date::default_date;
//...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2010, 19:48
Привет! Вот еще темы с ответами:

Ошибка - ссылка на неразрешенный внешний символ - C++
Написал две программы подряд. В них выскакивает одна и та же ошибка 1>------ Построение начато: проект: 4, Конфигурация: Debug Win32...

Ошибка компоновщика: ссылка на неразрешенный внешний символ - C++
Ошибка: ссылка на неразрешенный внешний символ: в строчке: int y = SomeClass::Func(x); Почему я не понимаю. Если класс поместить в файл с...

Ошибка LNK2019: ссылка на неразрешенный внешний символ - C++
Уже который день не могу разобраться с этой проблемой! У меня есть класс Agent, с данными name, age и experience. Для того, чтобы...

Ошибка LNK2019 ссылка на неразрешенный внешний символ - C++
В заголовочном файле объявлен класс class cLogReader { public: cLogReader(int i) { }; ~cLogReader();


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

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

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