Я столкнулся с интересной проблемой в том, что, похоже, должно быть стандартной реализацией CRTP. Я использую g++ и c++23.
Здесь Drawable — базовый класс, а ImageDrawable наследуется от него с помощью CRTP, как показано ниже. В моем основном коде я инициализирую объект ImageDrawable как Drawable Drawing = ImageDrawable(image, true) для изображения, которое я указываю. В конструкторе диагностика печатается нормально, и все выглядит так, как будто this->_image = image.
Однако в моем основном коде строка после инициализации объекта , я распечатываю его параметр isntshit, и он не только не 1, как следует из списка инициализации, но и не 0, а 1634036736.
Далее я печатаю диагностические данные _image, и несмотря на то, что _image должно быть либо image, либо Grid
(15, 16) , это ни то, ни другое, а Grid().
Я просмотрел примеры, но не знаю, как действовать; кажется, что другие делают то же самое без проблем.
Кроме того, когда get_pixel запускается, _image содержит еще другие данные, которые снова не являются ни одним из значений это должно произойти, и это приведет к SegFault.
Мой код приведен ниже.
drawabletypes.cpp
#ifndef DBLE_TYPES_H
#define DBLE_TYPES_H
#include "drawable.cpp"
using namespace std;
class ImageDrawable : public Drawable < ImageDrawable > {
private:
const int _rows, _cols; // image size
public:
Grid < Pixel > _image {15, 16};
int isntshit = 0;
ImageDrawable (
Grid < Pixel > & image,
bool from_centre = false,
float rotate = 0,
float scale_factor = 1,
float current_pos_x = 0,
float current_pos_y = 0
) :
Drawable < ImageDrawable > (
from_centre,
rotate,
current_pos_x,
current_pos_y,
image.height() / 2.0,
image.width() / 2.0
),
_image ( image ),
_rows ( image.height() ),
_cols ( image.width() ),
isntshit ( 1 )
{
cout
Подробнее здесь: https://stackoverflow.com/questions/792 ... -variables
С++: производный класс от CRTP не может получить доступ к своим собственным переменным [закрыто] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как заменить класс RelationalModelValidtor ядра EF (C#) своим собственным классом?
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как заменить класс RelationalModelValidator EF Core (C#) своим собственным классом?
Anonymous » » в форуме C# - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-