Почему класс вне видимости файла?

Рейтинг: 0Ответов: 1Опубликовано: 28.02.2023

Есть три файла: Main

#include <iostream>
#include "class.h"
using namespace std;

int main()
{
    Triangle test;

    return 0;
}

Заголовочный class.h

#pragma once
#include "class.cpp"

class Triangle
{
    double a, b, gamma;
public:
    void SetSideA(double);
    void SetSideB(double);
    void SetAngleBetween(double);
    void GetData();

};

И файл с определениями class.cpp

#include "class.h"

void Triangle::SetSideA(double x)
{
    a = x;
}
void Triangle::SetSideB(double x)
{
    b = x;
}
void Triangle::SetAngleBetween(double x)
{
    gamma = x;
}
void Triangle::GetData()
{
    std::cout << "CLASS TRIANGLE: \n side A = " << a << "\nside B = " << b << "\nAngle between = " << gamma << std::endl << std::endl;
}

В командной при вызове g++ ./main.cpp выводится ошибка

Triangle' was not declared in this scope

В чем проблема? Вроде бы все файлы подключены

Ответы

▲ 1

Вам нужно заменить строку #include "class.cpp" из class.h на #include <iostream> и вызывать g++ ./main.cpp ./class.cpp. Все новые cpp файлы нужно будет дописывать в вызов аналогичным образом. Есть ленивый вариант: g++ *.cpp.

В вашем варианте ответа вы просто склеиваете все файлы в один с помощью директив препроцессора.