我一直在試圖進行測試,以賦值運算符的呼叫=爲我的結構:轉換操作符(賦值運算符=)沒有響應
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