Инициализация вектора объектов (с конструктором, принимающим значения), являющегося членом класса

Количество объектов класса MCP в векторе _rheos заранее неизвестно. std::vector использую впервые. Ткните носом, пожалуйста, что не так. Не обязательно использовать вектор, но я другого решения для динамического массива объектов не нашёл.

class MCP
{
public:
    MCP (mbed::SPI& spi, PinName cs) : _spi(spi), _cs(cs) {}
private:
    mbed::SPI& _spi;
    mbed::DigitalOut _cs;
};
class Load
{
public:
    Load(uint8_t load_qty, mbed::SPI& spi, PinName rs) : _rs(rs)
    {
        for (register uint8_t i = 0; i < load_qty; i++)
        {
            _rheos.emplace_back(spi, NC);  //Здесь всё падает
        }
    }

private:
    mbed::DigitalOut _rs;
    std::vector<MCP> _rheos;
};
int main()
{
    mbed::SPI spi1(MOSI, MISO, SCK);
    Loads RLoads(7, spi1, BUTTON1); 
}

Компилируется успешно, но не работает.


Ответы (1 шт):

Автор решения: Sergio

Проблема оказалась в том, что MCP не нравится NC в качестве PinName. При этом, если, например, тот же SPI объявить как spi2(MOSI, NC, SCK); - то никаких проблем и всё работает. Mbed-OS magic.

→ Ссылка