Я пытался проверить вызов оператора присваивания = для моей структуры:оператор преобразования (назначение оператора =) не отвечает
struct array{
void* data;
template<typename S, typename T>
array& operator= (const map<S, T>& that){ cout << "worked..."; return *this;}
private:
array(); //i don't need this
};
и я испытываю, поехал так:
map<int, string> var;
array arr = var;
я получил ошибку:
Error: conversion from
'std::map<int, string, std::less<int>, std::allocator<std::pair<const int, string> > >'
to non-scalar type 'array' requested*/
Вопрос: , что именно проблема? Как перегрузить такой оператор? Я имею в виду operator=
, который должен преобразовать объект другого типа в его собственный тип класса.
Пожалуйста, не наклеивайте блоки кода на C++ как фрагменты кода JavaScript - они действительно не могут быть запущены в браузере ... –
Возможный дубликат [Почему оператор присваивания не вызывается в этом случае в пользу копировать конструктор?] (http://stackoverflow.com/questions/14637805/why-is-the-assignment-operator-not-called-in-this-case-in-favor-of- the-copyccons) – TobiMcNamobi