C++ 中使用运算符 [] 重载区分读和写

2024-02-26

我有一个包含预测数组的安全类 - 预测是一个类,它只包含一个双精度数。 我想允许更改双精度值,但只允许正值, 当尝试读取双精度值时,如果该值未初始化(在我的代码中等于 -1),则会抛出异常。 我也有双运算符
像这样的东西:

class Prediction{
    double value;
public:
    .....
    Prediction::operator double() const {
        return this->prediction;
    }
    Prediction::operator=(const double value){
       ...
        //check value
    }

}

class Security{
   ...
    Prediction& Security::operator[](int index){
        return predArray[index];
    }
}

Prediction *predArray = new Prediction[4];
//default constructor set the value -1;

double a = predArray[0] //should throw an exception, because predArray[0] = -1
predArray[0] = 4; //should be O.K. because I want to change the value
predArray[1] = -4; //should throw exception, because trying to put negative value;

我在哪里定义阅读和写作,因为阅读和写作时我在做不同的事情。

THANKS


你不能这样做operator[]。操作员无法知道将如何使用它返回的值。因此,您必须将其作为返回对象的函数来执行。通过引入返回对象的赋值运算符,您可以很容易地处理对负值的赋值。

Prediction::operator=(const double value){
    if (value < 0)
        throw something;
    ...
}

如果您希望抛出此语句:

double a = predArray[0];

您必须在转换为双运算符时执行此操作。

Prediction::operator double() const {
    if (value < 0)
        throw something;
    return value;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中使用运算符 [] 重载区分读和写 的相关文章

  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问

随机推荐

  • 在 C# 中实现生产者/消费者模式

    我该如何实施生产者 消费者C 中的模式使用活动和代表 使用这些设计模式时 在资源方面需要注意什么 有什么我需要注意的边缘情况吗 我知道这个线程有点老了 但由于我有时在搜索中遇到它 我决定为那些想知道如何实现简单的通用生产者 消费者作业队列的
  • VC++ 堆栈跟踪无法解析生产中的函数名称

    我最近使用实现了堆栈跟踪日志记录boost 的新 stacktrace 库 https www boost org doc libs develop doc html stacktrace getting started html int
  • 使用jquery下载文件自定义名称

    我正在使用 jQueryplugin https github com battatech battatech excelexport将 HTML 表导出到 Excel 使用chrome下载的文件名始终是download xls使用 moz
  • 如何使用 Thrust 计算 int2 数组的平均值

    我正在尝试计算包含点 x y 的某个数组的平均值 是否可以使用推力找到表示为 x y 点的平均点 我也可以将数组表示为thrust device vector
  • D3.js 结合条形图和折线图

    我想通过将条形图与折线图组合来创建多个系列图表 当我使用rangeBands 为了设置输出范围 该线从图表中第一个柱的开头开始绘制 并在最后一个柱的开头结束 我应该更改什么以使该线从第一个刻度线开始并在最后一个刻度线结束 var data
  • 使用模拟器进行条码扫描的 Windows Mobile 应用程序

    我想为 Motorolo MC 9190 G 手机开发简单的应用程序 它有内置的条形码扫描仪 我想扫描条形码并将其显示在消息框中 我没有手机 所以我必须在模拟器中测试它 当我在模拟器中部署代码时 它给出了 null 异常错误 我的代码是 我
  • 如何对ServiceStack进行单元测试?

    我喜欢 SS 但我在尝试对我的业务层进行单元测试时摸不着头脑 我是单元测试和模拟的新手 并且一直在阅读 NSubstitute 因为这看起来像是一个有趣的模拟层 我的文件结构大致如下 MainAppHostProject AppStart
  • 使用Python解析JSON数据

    我从 GitHub Webhook 服务收到一些数据 它包含有关存储库中最近提交的信息 我收到的字符串如下所示 payload ref refs heads master commits added author username myna
  • 如何检索 Pandas 数据框中的列数?

    如何以编程方式检索 pandas 数据框中的列数 我希望有这样的事情 df num columns Like so import pandas as pd df pd DataFrame pear 1 2 3 apple 2 3 4 ora
  • Docker:运行 html 文件的基本示例 dockerfile

    docker 和 dockerfile 是否有任何非常基本且仍然可行的示例来运行单个 html 文件并在 docker 的帮助下将其显示给其他人 要在 http 上提供 html 文件 您需要一个 Web 服务器 因此要做到这一点 您需要做
  • scipy.interpolate.Rbf 的意外结果

    我在使用 RBF 进行插值时遇到一些错误 这是一维的示例 我认为这与我的 y 值彼此之间的接近程度有关 有什么解决办法吗 import numpy as np from scipy interpolate import Rbf interp
  • 从雅虎财经获取 1 分钟柱线

    我正在尝试从雅虎财经下载 1 分钟的历史股票价格 包括当天和前一天的价格 Yahoo 就像 Google 支持最多 15 天的数据 使用以下 API 查询 http chartapi finance yahoo com instrument
  • 如何使用 Twitter API 批准关注者对受保护帐户的请求?

    The 友谊 创造 https dev twitter com docs api 1 post friendships create似乎是最接近的选项 但他们的文档没有明确提及这种情况 有人能够做到这一点吗 我收到了 Twitter 员工的
  • 为什么使用 for 循环而不是 while 循环? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 for 循环还是 while 循环进行迭代 https stackoverflow com questions 99164 iterate with for loop or while loop
  • 如何在innerText 或nodeValue 之间进行选择?

    当我需要更改 span 元素中的文本时 我应该使用哪一个以及有什么区别 var spnDetailDisplay document getElementById spnDetailDisplay spnDetailDisplay inner
  • 没有外键关系的内联管理

    是否可以手动指定要在内联中显示的相关对象集 其中不存在外键关系 Parent class Diary models Model day models DateField activities models TextField Child c
  • FFMPEG读取关键帧

    我正在尝试编写一个 C 程序 该程序将使用 ffmpeg 从视频文件中读取关键帧 到目前为止 我设法使用所有框架av read frame你按顺序阅读的地方 一帧一帧 但我在使用时遇到一些问题av seek frame这 如果我是正确的 应
  • 如何在不使用 eval 的情况下动态包含 Perl 模块?

    我需要动态包含 Perl 模块 但如果可能的话 由于工作编码标准 我希望远离 eval 这有效 module My module eval use module 但我需要一种方法来做到这一点 而不需要eval如果可能的话 所有谷歌搜索都会导
  • 客户端发送 SOAP 请求并接收响应

    尝试创建一个 C 客户端 将开发为 Windows 服务 将 SOAP 请求发送到 Web 服务 并获取结果 由此question https stackoverflow com questions 1862965 sending and
  • C++ 中使用运算符 [] 重载区分读和写

    我有一个包含预测数组的安全类 预测是一个类 它只包含一个双精度数 我想允许更改双精度值 但只允许正值 当尝试读取双精度值时 如果该值未初始化 在我的代码中等于 1 则会抛出异常 我也有双运算符像这样的东西 class Prediction