我一直在试图进行测试,以赋值运算符的呼叫=为我的结构:转换操作符(赋值运算符=)没有响应
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-copy-cons) – TobiMcNamobi