Я пытаюсь добавить общий указатель в мой список инициализации. Этот указатель уже был объявлен в моем заголовочном файле. Как только я добавляю его в список, компилятор выдает ошибку с error: no matching function for call to std::shared_ptr<memory::Mmu>::shared_ptr(std::shared_ptr<Cartridge>&)
заголовочным файлом:
class Gameboy {
public:
Gameboy(std::vector<uint8_t>);
void run();
private:
void tick();
std::shared_ptr<Cartridge> cartridge;
std::shared_ptr<memory::Mmu> mmu;
};
c файлом:
Gameboy::Gameboy(std::vector<uint8_t> cartridgeData)
: cartridge(getCartridge(std::move(cartridgeData))),
mmu(cartridge)
{
}
mmu.h
namespace memory {
class Mmu {
public:
std::shared_ptr<Cartridge> cartridge;
Mmu(std::shared_ptr<Cartridge>&);
private:
bool bootRomActive() const;
};
}
Я ожидаю, что он вызовет конструктор mmu, который принимает std::shared_ptr<Cartridge>&
в качестве первого параметра.