Имеем две вариации конструктора класса:
CAttribute(const string &name, const uint32_t index, const CSiiData &value);
CAttribute(const string &name, const bool hasIndex, const CSiiData &value);
При попытке объявления переменной этого класса я получаю ошибку:
существует более одного экземпляра конструктора "CAttribute::CAttribute", соответствующего списку аргументов:
функцию "CAttribute::CAttribute(const std::string &name, uint32_t index, const std::string &value)"
функцию "CAttribute::CAttribute(const std::string &name, bool hasIndex, const std::string &value)"
типы аргументов: (const char [12], int, const char [5])
Происходит это из-за расширения типа
bool до
int.
Суть класса в двух словах: хранения объекта "Атрибут", который содержит имя, значение и может быть частью "массива", как нумерованного, так и без нумерации. Например:
- "Простой" атрибут:
attr: value
- "Нумерованные" атрибуты:
attr[0]: some_value
attr[1]: some_value2
- "Не нумерованные" атрибуты:
attr[]: some_value
attr[]: some_value2
Вопрос: возможно ли всё-таки создать конструкторы с указанным набором аргументов?