Разъяснение относительно перегрузки операторовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разъяснение относительно перегрузки операторов

Сообщение Anonymous »

Чтобы обеспечить контекст, у меня есть исполняемый файл, который зависит от другой библиотеки Foo, которая обеспечивает реализацию класса Identifier, теперь класс модуля в моем исполняемом файле должен кэшировать объект Foo, привязанный к идентификатору, поэтому я добавил логику, как показано ниже р>

Код: Выделить всё

class Module {
public:

static std::shared_ptr create();

explicit Module() = default;

...
protected:
...
/// Map that caches Foo object keyed on @c Identifier.
std::map m_FooMap;
};
в моем Module.CPP я вставляю на карту следующим образом

Код: Выделить всё

Foo foo; m_FooMap.emplace(identifier, foo);
Но когда я пытаюсь скомпилировать, я получаю следующую ошибку

Код: Выделить всё

/local/home/workspace/build/usr/include/c++/v1/__functional/operations.h:372:21: error: invalid operands to binary expression ('const Identifier' and 'const Identifier')
{return __x < __y;}
~~~ ^ ~~~
/local/home/workspace/build/usr/include/c++/v1/map:598:17: note: in an instantiation of member function 'std::less::operator()' requested here
{return static_cast(*this)(__x, __y.__get_value().first);}
^
/local/home/workspace/build/usr/include/c++/v1/__tree:1974:17: note: in instantiation of member function 'std::__map_value_compare, std::less, true>::operator()' requested here
if (value_comp()(__v, __nd->__value_))
^
Насколько я понимаю, похоже, что в классе Identifier отсутствует оператор «меньше», и поскольку я не могу вносить изменения в библиотеку Foo, которая обеспечивает реализацию Identifier, я попытался перегрузить оба меньше и равно оператору идентификатора в самом файле Module.h

Код: Выделить всё

// Overloading the less-than operator for the Identifier
// objects
bool operator

Подробнее здесь: [url]https://stackoverflow.com/questions/79286801/clarification-regarding-operator-overloading[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»