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

Неразрешенные Внешние Символы. что делать?

14.02.2021, 22:20. Показов 475. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужна помощь, я написал программу, в которой цены двух товаров суммируются.
Написал, вроде нормально, но, вдруг, выводит такое:

1>LR(1.1)V5.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Goods::~Goods(void)" (??1Goods@@QAE@XZ) в функции _main
1>LR(1.1)V5.obj : error LNK2001: неразрешенный внешний символ ""public: static int Goods::number" (?number@Goods@@2HA)"
1>C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\LR(1.1)V5\Debug\LR(1.1)V5.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\LR(1.1)V5\LR(1.1)V5\Debug\BuildLog.htm"
1>LR(1.1)V5 - ошибок 3, предупреждений 1

что не так?
вот код:

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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
class Goods                    //Класс Goods(Товар)
{
public:
    static int number;         //Идентификатор, нужен для счётчика "Товар №"
    string name;               //Название товара
    string make;               //Марка товара
    float price;               //Цена товара
    string expirationDate;     //Срок годности
friend void priceTotal(Goods &, Goods &);    //Дружественная функция, в которой суммируются цена двух товаров
Goods(string nameOfGoods, string makeOfGoods, float priceOfGoods, string expDate)
    {                                               //Конструктор с параметрами
        number++;
        name = nameOfGoods;
        make = makeOfGoods;
        price = priceOfGoods;
        expirationDate = expDate;
    }
void print(Goods &goods){                            //Функция вывода атрибутов класса Goods
        cout << "Товар №" << goods.number << ":" << endl;
    cout << "Название: " << goods.name << "." << endl;
    cout << "Производитель: " << goods.make << "." << endl;
    cout << "Срок годности: " << goods.expirationDate << "." << endl;
    cout << "Цена: " << goods.price << " грн." << endl;
}
~Goods();                    //Деструктор
};
 
void priceTotal(Goods &goods1, Goods &goods2)            //Та же дружественная функция, что и выше.
{
    int newwPriceTotal = goods1.price + goods2.price;    //Переменная, в которой сохраняется сумма двух товаров
    cout << "Общая цена двух товаров: " << newwPriceTotal << " грн." << endl;
}
 
 
int main()
{
    Goods rctoycar("Ford F150 на р/у, масштаб 1:6", "New Bright", 5439, "Нет");    //Объявленние объекта rctoycar
    rctoycar.print(rctoycar);                                                      //Вывод атрибутов объекта rctoycar
 
    Goods candy("Конфеты Kinder Schoko-Bons, 200 гр", "Kinder", 125, "До 25.03.2021");  //Объявленние объекта candy
    candy.print(candy);                                                                 //Вывод атрибутов объекта rctoycar
 
    priceTotal(rctoycar, candy);                                                        //Вызов функции, в которой суммируются цены двух товаров
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2021, 22:20
Ответы с готовыми решениями:

Неразрешенные внешние символы/элементы
появились такие ошибки error LNK1120: неразрешенных внешних элементов: 1 error LNK2019: ссылка на...

Переопределение и неразрешённые внешние символы (VS2017)
Список ошибок во вложениях в виде скриншота. Внимание, ХЭДЭР #pragma once #include &lt;iostream&gt;...

Наследование классов(ошибка неразрешенные внешние символы)
Добрый день! Реализую программу для решения СЛАУ методом Гаусса. Встрял на том, что компилятор...

Неразрешенные внешние элементы
Добрый день. Учусь структурам и классам. После написания кода вылазит ошибка. Программа должна...

5
Вездепух
Эксперт CЭксперт С++
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,859
14.02.2021, 22:33 2
Цитата Сообщение от БМ2000 Посмотреть сообщение
Неразрешенные Внешние Символы. что делать?
Не пытаться обмануть компилятор.

Вы объявили деструктор

Цитата Сообщение от БМ2000 Посмотреть сообщение
C++
1
~Goods();                    //Деструктор
то есть пообещали компилятору, что где-то потом его определите. Вы определили его? Нет. Почему же вас тогда удивляет, что линкер жалуется на ненайденный деструктор?

Зачем вы вообще явно объявляли деструктор в этом классе?
1
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
14.02.2021, 22:33 3
Цитата Сообщение от БМ2000 Посмотреть сообщение
что не так?
Где определения объявленных сущностей?
Цитата Сообщение от БМ2000 Посмотреть сообщение
static int number; //Идентификатор, нужен для счётчика "Товар №"
C++
1
inline static int number = 0;
Цитата Сообщение от БМ2000 Посмотреть сообщение
~Goods(); //Деструктор
C++
1
//~Goods();
или
C++
1
~Goods() = default;
1
Вездепух
Эксперт CЭксперт С++
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,859
14.02.2021, 22:35 4
Что касается

Цитата Сообщение от БМ2000 Посмотреть сообщение
error LNK2001: неразрешенный внешний символ ""public: static int Goods::number" (?number@Goods@@2HA)"
это фактически та же ошибка. Где ваше определение поля number?
1
0 / 0 / 0
Регистрация: 07.07.2020
Сообщений: 32
14.02.2021, 23:37  [ТС] 5
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Зачем вы вообще явно объявляли деструктор в этом классе?
Это требование к лабораторной работе.
0
Вездепух
Эксперт CЭксперт С++
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,859
15.02.2021, 01:07 6
Цитата Сообщение от БМ2000 Посмотреть сообщение
Это требование к лабораторной работе.
Это - странное требование. Но тем не менее: раз уж вы объявили деструктор, то придется его еще и определить.
1
15.02.2021, 01:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2021, 01:07
Помогаю со студенческими работами здесь

Шаблоны: неразрешенные внешние элементы
Пишу шаблонный класс-массив. Появилась такая проблема. Если инициализировать конструктор и...

Неразрешенные внешние элементы. Где ошибка?
Здравствуйте! Есть один проект WorkerCalculate.cpp: // WorkerCalculate.cpp: определяет...

Библиотека fltk и неразрешенные внешние элементы
Здравствуйте. Уже не знаю, куда обратится, пишу сюда. Извиняюсь, если вопрос не новый, но думаю...

Почему в конце символьной строки появляются разные символы, и что с ними делать?
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом...

Ошибки линковки: неразрешенные внешние символы
#include &lt;QObject&gt; class A : QObject{ Q_OBJECT public: A() : QObject(){} int x;...

Неразрешенные внешние элементы в классе
Суть задачи передать в функцию set текст с последующим использованием его в print (где также...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru