t
Size: a a a
t
ПК
t
deque<map<string, int>>
, напримерПК
deque<map<string, int>>
, напримерПК
for (const auto& item : items) {
}
ПК
const map<string, int>&
ПК
t
for (const auto& item : items) {
}
auto
работает. C for (const Item& item : sortedItems) {
не хочетReference to type 'const Item' (aka 'const map<basic_string<char, char_traits<char>, allocator<char> >, variant<basic_string<char, char_traits<char>, allocator<char> >, double> >') could not bind to an lvalue of type 'std::_Deque_iterator<std::_Deque_val<std::_Deque_simple_types<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double> > > > *> > >::value_type' (aka 'std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double> > > > *')
--------------------------
const map<basic_string<char>, variant<basic_string<char>, double>> &item
ПК
auto
работает. C for (const Item& item : sortedItems) {
не хочетReference to type 'const Item' (aka 'const map<basic_string<char, char_traits<char>, allocator<char> >, variant<basic_string<char, char_traits<char>, allocator<char> >, double> >') could not bind to an lvalue of type 'std::_Deque_iterator<std::_Deque_val<std::_Deque_simple_types<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double> > > > *> > >::value_type' (aka 'std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double> > > > *')
--------------------------
const map<basic_string<char>, variant<basic_string<char>, double>> &item
🎄T
map<basic_string<char, char_traits<char>, allocator<char> >, variant<basic_string<char, char_traits<char>, allocator<char> >, double> >
t
using Item = map<string, variant<string, double>>;
ПК
decltype(items)::value_type
?ПК
deque<map<string, int>>
, то Item должен быть map<string, int>
s
class Stream : public FileLike, private NonCopyable<Stream> {
...
protected:
virtual int _putc(int c) = 0;
virtual int _getc() = 0;
virtual void lock()
{
}
virtual void unlock()
{
}
...
от этого класса наследуются классы в которых уже конкретная реализация Serial порта, напримерclass USBSerial: public USBCDC, public mbed::Stream
{...}
Как мне сделать так чтобы я определил перегрузку lock()/unlock()
в одном месте и для всех классов наследников Stream
ее использовал?template <typename T>
class MySerial : public T {
protected:
void lock(void) override { mutex_.lock(); }
void unlock(void) override { mutex_.unlock(); }
private:
Mutex mutex_;
};
конструкторы могут быть разные - в зависимости от реализации, например:Serial pc_serial(PC_6, PC_7, 250000);
USBSerial pc_serial(true, 0x1f00, 0x2012, 0x0001);
Как сделать так чтобы у наследованного класса появились конструкторы базового?ПК
ПК
class Stream : public FileLike, private NonCopyable<Stream> {
...
protected:
virtual int _putc(int c) = 0;
virtual int _getc() = 0;
virtual void lock()
{
}
virtual void unlock()
{
}
...
от этого класса наследуются классы в которых уже конкретная реализация Serial порта, напримерclass USBSerial: public USBCDC, public mbed::Stream
{...}
Как мне сделать так чтобы я определил перегрузку lock()/unlock()
в одном месте и для всех классов наследников Stream
ее использовал?template <typename T>
class MySerial : public T {
protected:
void lock(void) override { mutex_.lock(); }
void unlock(void) override { mutex_.unlock(); }
private:
Mutex mutex_;
};
конструкторы могут быть разные - в зависимости от реализации, например:Serial pc_serial(PC_6, PC_7, 250000);
USBSerial pc_serial(true, 0x1f00, 0x2012, 0x0001);
Как сделать так чтобы у наследованного класса появились конструкторы базового?AB
t
deque<map<string, int>>
, то Item должен быть map<string, int>
using Items = deque<Item>
. int и проч. я для упрощения написалt
using Items = deque<Item>
. int и проч. я для упрощения написалdeque<Item*> sortedItems
t