Программа cra * sh. Я пытаюсь реализовать функцию Brick ** create_bricks()
, которая возвращает указатель на указатель Brick (потому что я хочу создать массив Bricks и вернуть позицию первого). Я дергаю себя за волосы, и последнее, что я делаю после нескольких неудачных попыток, ошибок и исследований, - это упрощаю мой код и проверяю значение указателей строка за строкой. Когда я разыменовываю the_brick
как *the_brick
в игре с функцией рисования l oop, оно не получает того же значения, которое присвоено new Brick()
для ptr_brick
внутри create_bricks()
функции. Я использую SFML, но проблема связана с указателями.
Примечание : если я возвращаю Brick *
из create_bricks
с правильными модификациями, он работает нормально (и рисует кирпич) , но мне нужно создать несколько кирпичей, а не только один.
#include "Brick.h"
int main()
{
...
while (window.isOpen())
{
Brick ** ptr_bricks = create_bricks();
Brick * ptr_brick = *ptr_bricks;
window.draw(*the_brick);
}
return 0;
}
Brick ** create_bricks()
{
Brick * ptr_brick = new Brick();
ptrBrick->setPosition(150, 20);
return &ptrBrick;
}
#include "Brick.h"
Brick::Brick()
{
LOG(INFO) << "Brick constructor";
setPosition(10, 10);
setSize(sf::Vector2f(100, 20));
setFillColor(sf::Color::Green);
setOutlineThickness(1);
}
Brick::~Brick()
{
LOG(INFO) << "Brick destructor";
//dtor
}
Спасибо