Всем доброго!
Вынес реализацию класса в отдельный файл wall.h, и пытаюсь вынести методы этого класса в отдельный файл wall.cpp.
При попытке запуска программы в VScode я получаю ошибку компоновщика
ld: Undefined symbols:
Wall::Wall(double, double), referenced from:
_main in main-a15ca2.o
Wall::GetSquare() const, referenced from:
_main in main-a15ca2.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Если методы описываю внутри класса - все работает.
Уже всю голову сломал, что я делаю не так?
Если в командной строке компилирую - тоже все работает.
g++ -W --std=c++17 main.cpp wall.cpp -o main
Какие настройки стоит подправить?
//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;
double GetSquare() 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_;
}
double Wall::GetSquare() const {
return width_ * height_;
}
g++ -W --std=c++17 main.cpp wall.cpp -o mainи все скомпилировалось, все заработало. Но не могу понять, куда думать, чтобы все работало не из командной строки... – Stanislav Polischuk Dec 24 '23 at 11:31