Для этого я написал IOutput< /code> интерфейс, который наследуется классами, соответствующими каждому способу рендеринга изображения.
Вот проблемный фрагмент кода:
Код: Выделить всё
#ifndef PPM_FILE_HPP_
#define PPM_FILE_HPP_
// #include "../Core/math.hpp"
#include
#include
#include
#include
#include
namespace Math {
class Vector3D {
public:
double x, y, z;
Vector3D() : x(0), y(0), z(0) {}
Vector3D(double _x, double _y, double _z) : x(_x), y(_y), z(_z) {}
};
}
template
class IOutput {
public:
IOutput() : is_rendered(false) {}
virtual void refresh() = 0;
virtual void set_pixel(std::tuple location, Math::Vector3D color) = 0;
virtual void set_as_rendered() = 0;
protected:
std::array grid;
bool is_rendered = false;
};
template
class PPM_file : public IOutput {
public:
PPM_file(std::string filename) : IOutput(), file(filename), color_depth(255)
{
if (!file.is_open())
throw std::runtime_error("Unable to open file: " + filename);
file
Подробнее здесь: [url]https://stackoverflow.com/questions/78374956/templated-class-segfaults-when-using-inheritance[/url]