0

Распределяю код по файлам, и не могу запустить код. Попробовал через GDB, и там код работает, но если я пытаюсь запустить его в VS, то компилятор выдает ошибку:

error LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl Wall::Wall(double,double)" (??0Wall@@QEAA@NN@Z) в функции main.
error LNK2019: ссылка на неразрешенный внешний символ "public: int __cdecl Carpenter::CalcShelves(class Wall)const " (?CalcShelves@Carpenter@@QEBAHVWall@@@Z) в функции main.

Вот сам код:

5-4 y4 z2.cpp

#include <iostream>
#include "wall.h"
#include "carpenter.h"

using namespace std;

int main() { Carpenter jack; Wall wall{2.2, 4.4}; // jack.CalcShelves(wall) == 4 cout << jack.CalcShelves(wall) << endl; }

wall.h

class Wall {
public:
    enum class Color { BLUE, GREEN, RED, WHITE, YELLOW };
Wall(double width, double height);

double GetHeight() const;
double GetWidth() const;
void SetColor(Color color);
Color GetColor() const;

private: double width_; double height_; Color color_; };

wall.cpp

#include "wall.h"

Wall::Wall(double width, double height) : width_(width) , height_(height) , color_(Color::WHITE) { }

double Wall::GetHeight() const { return height_; } double Wall::GetWidth() const { return width_; } void Wall::SetColor(Color color) { color_ = color; } Wall::Color Wall::GetColor() const { return color_; }

carpenter.h

class Wall;

class Carpenter { public: int CalcShelves(Wall w) const; private:

};

carpenter.cpp

#include "carpenter.h"
#include "wall.h"
#include "square_calculations.h"

int Carpenter::CalcShelves(Wall wall) const { double square = CalcSquare(wall.GetWidth(), wall.GetHeight()); return static_cast<int>(square / 2); }

square_calculations.h

double CalcSquare(double width, double height);

square_calculation.cpp

double CalcSquare(double height, double width) {
    return width * height;
}

Как исправить эту проблему?

Kewsen
  • 49
  • 7

0 Answers0