Количество объектов класса 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);
}
Компилируется успешно, но не работает.
Проблема оказалась в том, что MCP
не нравится NC
в качестве PinName
.
При этом, если, например, тот же SPI
объявить как spi2(MOSI, NC, SCK);
- то никаких проблем и всё работает.
Mbed-OS magic.
Я попытался использовать ключевые слова из с++20 связанные с корутинами, но компилятор выдает ошибку
Создание std::shared_ptr через std::make_shared может быть полезным в следующем случае:
Есть двумерный вектор: vector<vector<int>> a(n, vector<int>(c+1, 0))И хочется изменить все его элементы на определенну константу (например 1)