【发布时间】:2016-11-02 01:55:09
【问题描述】:
我一直在尝试为我的结构测试对赋值运算符 = 的调用:
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 代码 sn-ps - 它们确实无法在浏览器中运行...
标签: c++ operator-overloading copy-constructor