Top.Mail.Ru
Ответы

C++. Ошибки от компилятора в Visual Studio 2015. Как решить ошибки?

Ошибки:
1>------Сборка начата: проект: Console, Конфигурация: Debug Win32 ------
1> Console.cpp
1>Console.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Display::~Display(void)" (??1Display@@QAE@XZ) в функции _main
1>Console.obj : error LNK2001: неразрешенный внешний символ ""private: static int Display::XDisplay" (?XDisplay@Display@@0HA)"
1>Console Engine.obj : error LNK2001: неразрешенный внешний символ ""private: static int Display::YDisplay" (?YDisplay@Display@@0HA)"
1>E:\егор\VisStu\Projects\Console Engine\Debug\Console Engine.exe : fatal error LNK1120: неразрешенных внешних элементов: 3
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Код в файле Display.h:
#pragma once
#include
#include
#include
using namespace std;
class Display
{
private:
static int XDisplay;
static int YDisplay;
public:
void setDisplaySize(int XD, int YD) {
XDisplay = XD;
YDisplay = YD;
}
int getDisplaySize(char coord) {
if (coord == 'x' || coord == 'X') {
return XDisplay;
}
if (coord == 'y' || coord == 'Y') {
return YDisplay;
}
}
~Display();
};

В основном файле Console.cpp:
// Console.cpp: определяет точку входа для консольного приложения.
//

#include
#include "stdafx.h"
#include "Display.h"
#include

int main()
{
Display display(80, 24);
cout << display.getDisplaySize('x');
display.cursor(0, 2);
cout << display.getDisplaySize('y');
return 0;
}

Дополнен

в Display.h еще
Display(int XSize, int YSize) {
XDisplay = XSize;
YDisplay = YSize;
}

По дате
По рейтингу
Аватар пользователя
Просветленный
8лет

~Display() объявлен, но не реализован. Его можно просто удалить пока.
Статические поля надо объявить в .cpp-файле:
int Display::XDisplay=0;
или сделать их не статическими. По логике они не должны быть статическими.