转换操作符(赋值操作符=)没有响应
conversion operator (assignment operator=) is not responding
我一直在尝试测试对我的结构体的赋值操作符=的调用:
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=
,它应该将不同类型的对象转换为自己的类类型。
声明
map<int, string> var;
array arr = var;
白马王子;不调用复制赋值操作符。
它使用(或表现得好像使用)复制构造函数:在声明中=
表示复制初始化。
如果类有其他构造函数,它们将被考虑将var
转换为array
实例,然后(除非这部分被优化掉)将被传递给复制构造函数。
但是你只有默认的复制构造函数。
从类型B到类型a的转换最好用以下两种方式之一表示:
通过类a构造函数接受b。
如果B是一个类,通过B
operator A
(转换操作符)。
其他新闻:
-
void*
是一种丢弃类型信息的方法。丢弃类型信息是一种制造麻烦的方式。因此,void*
最好是空的。
相关文章:
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- C++ 信号和插槽不工作:插槽不响应事件
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- C++关于ENUM的问题。我得到的响应比枚举列表大
- 应用程序在打开的简历中捕获视频后没有响应
- 使用 cpprest (Casablanca) 返回 PDF 响应
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 获取加密的正文响应WinHttp HTTPS
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 同步读取多个 TCP 响应
- HTTP 响应格式不正确?
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- HTTP帖子,无需等待响应
- 问题导致程序停止响应,并且姓氏未正确打印
- AT 命令响应解析器
- 将静态 IP 分配给我的 ESP32 服务器后不再响应
- 用于C++的 TCP/IP 解析器和响应器
- 我会导致太多内存泄漏,以至于我的计算机无响应吗?
- 转换操作符(赋值操作符=)没有响应