Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 6

Ошибки LNK2001

05.12.2015, 19:52. Показов 542. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Возникают ошибки линкования, я не знаю почему?
P.S. использую паттерн "Декоратор"
Код функции main
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <iostream>
#include "UniversalElCart.h"
#include "Decorator.h"
#include "UnCart.h"
#include "StrPolis.h"
#include "Passport.h"
#include "Pension.h"
#include "BankCart.h"
#include <conio.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    UniversalElCart *universalelcart = new UnCart();
    universalelcart = new Passport(universalelcart);
    universalelcart = new Pension(universalelcart);
    universalelcart = new BankCart(universalelcart);
    universalelcart = new StrPolis(universalelcart);
    universalelcart->getDescription();
    cout <<  " rub " << universalelcart->cost()<<endl;
    _getch();
}

UniversalElCart.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
#pragma once
class UniversalElCart
{ public:
public:
UniversalElCart(void);
~UniversalElCart(void);
virtual void getDescription()=0;
virtual float cost()=0;
};

Decorator.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
#pragma once
#include "UniversalElCart.h"
class Decorator :
public UniversalElCart
{
public:
virtual void getDescription()=0;
};

UnCart.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#include "universalelcart.h"
 
class UnCart :
    public UniversalElCart
{
public:
    UnCart();
    ~UnCart(void);
    float cost();
    void getDescription();
};

UnCart.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "StdAfx.h"
#include <iostream>
using namespace std;
#include "UnCart.h"
 
UnCart::UnCart()
{
}
 
UnCart::~UnCart(void)
{
}
float UnCart::cost()
{
return 1000;
}
void UnCart::getDescription()
{
cout <<  " Number_UnCart" <<endl ;
}

Passport.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include "decorator.h"
 
class Passport :
    public Decorator
{
    UniversalElCart *universalelcart;
public:
    Passport(UniversalElCart *universalelcart1);
    ~Passport(void);
    float cost();
    void getDescription();
};

Passport.cpp
Кликните здесь для просмотра всего текста
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"
#include "Passport.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
Passport::Passport(UniversalElCart *universalelcart)
{
    this->universalelcart=universalelcart;
}
 
Passport::~Passport(void)
{
}
 
float Passport::cost()
{
return (600 + universalelcart->cost());
}
 
void Passport::getDescription()
{
universalelcart->getDescription();
cout <<  " Passport " <<endl ;
}


и подобный код в других классах
Миниатюры
Ошибки LNK2001  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2015, 19:52
Ответы с готовыми решениями:

Ошибки LNK2001
Здравствуйте! Подскажите, как исправить ошибки: Error 7 error LNK2001: unresolved external symbol &quot;public: static struct...

Ошибки LNK2001 в библиотеках
Добрый день! Подключил библиотеку SFML к проекту, и в результате получил такие ошибки. Причем, используя Visual Studio 2008 ошибки не...

Ошибки LNK2001, LNK1120
Помогите, делаю консольную игру и тут две ошибки сразу: Серьезность Код Описание Проект Файл Строка Состояние подавления ...

7
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
05.12.2015, 19:55
А где коды класса UniversalElCart?
0
 Аватар для MaKaRoN IV
16 / 16 / 12
Регистрация: 20.04.2013
Сообщений: 64
05.12.2015, 20:00
Во-первых, попробуйте очистить решение и проект.
Во-вторых, посмотрите, возможно у вас сильно запутанные вызовы include во всех файлах, а также не прописана следующая директива в начале каждого из них:
C++
1
#pragma once
Вот ссылка на ее описание.
0
-L
15 / 9 / 12
Регистрация: 03.12.2015
Сообщений: 79
05.12.2015, 20:01
SaimonCat,

мб вам надо дописать код для конструктора и деструктора UniversalElCart. или убрать из хедера их упоминание

Скорее второе. Класс-то абстрактный
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
05.12.2015, 20:08
SaimonCat, Для базового класса имеющего виртуальные функции, от которого будут наследоваться другие классы необходимо определение виртуального деструктора с некоторой реализацией (в вырожденном случае - пустым телом)
T.е:
C++
1
2
3
4
5
6
7
8
9
#pragma once
class UniversalElCart
{ public:
public:
UniversalElCart(void);
virtual ~UniversalElCart(void) {} // или virtual ~UniversalElCat() = default;
virtual void getDescription()=0;
virtual float cost()=0;
};
Иначе вы для базового класса объявили наличие деструктора. При этом ни одна единица трансляции не имеет в списке экспортируемых символов реализации этого деструктора. О чем Вас и оповещает линковщик. Наличие перегрузки деструктора (темболее для не виртуального - его перекрытие) не спасает от отсутствия реализации исходного деструктора.
1
-L
15 / 9 / 12
Регистрация: 03.12.2015
Сообщений: 79
05.12.2015, 20:08
с конструктором тоже не забудьте что-нибудь сделать
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
05.12.2015, 20:10
Подробнее можете почитать в книге Мэйерс С. Эффективное использование С++ - "Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе".
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 6
05.12.2015, 20:56  [ТС]
Спасибо большое, буду пробовать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2015, 20:56
Помогаю со студенческими работами здесь

Ошибки LNK2001 и С2664 в Visual Studio 2008
Здравствуйте! При написании простой программы запуска Блокнота у меня возникла проблема с Кодировкой. При включенном параметре...

Ошибки LNK2001 и LNK1120
Наверное, какая-то нубская ошибка в синтаксисе, но я не знаю, что с этим делать //файл complex.h #ifndef _COMPLEX_ #define _COMPLEX_ ...

LNK2001
Скачал HDF5 с офф сайта, установил по прилагаемой инструкции (вот она...

LNK2001
Здравствуйте, форумчанины. Делал крупный для себя проект, и часто встречался с ошибками LNK2005, LNK2001, но с легкостью их решал ибо...

error LNK2001
беда, совсем беда. день тяжелый, мозг не работает. в общем пример из книжки. непосредственно мейн.цпп //_011.cpp #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru