C++ 受保护/公共重载

2023-12-12

我有一堂这样的课:

class Foo
{
public:
    Foo()
    {
        for(int i = 0; i < 10; ++i)
            v.push_back(i);
    };
    const vector<double>& V() const {return v;};
protected:
    vector<double>& V() {return v;};
private:
    vector<double> v;
};

然后是这样的一段代码:

Foo foo;
for(int i = 0; i < (int) foo.V().size(); ++i)
    cout << foo.V().at(i) << endl;

但是,后者会引发编译错误,指出V()call 是一个受保护的方法,而我只是尝试读取它,而不是修改它。

我尝试了以下方法(但没有成功)。

Foo foo;
const vector<double>& test = foo.V();
for(int i = 0; i < (int) test.size(); ++i)
    cout << test.at(i) << endl;

非常感谢您的帮助。

=====

谢谢大家的解释和解决方案!非常感谢!


返回值不可能重载。当对象是非 const 时,将使用非 const 方法。可以通过以下方式指导编译器:

const vector<double>& test = const_cast<Foo const&>(foo).V();

或者可能更好的解决方案是让常量方法具有不同的名称(例如:ConstV)。或者您可以只添加这个新方法并将当前方法保留在那里。 C++0x 标准中使用了这种方法。例如常量方法cbegin() and cend()已添加到标准容器中。

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

C++ 受保护/公共重载 的相关文章

  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 维护 VS Test Project 中单元测试方法之间的上下文

    我想按顺序运行以下单元测试 使用随机数字的名称 密码等创建新客户 检索刚刚创建的客户并断言其属性包含相同的随机数 对同一用户调用 ForgotPassword 函数 并使用相同的随机数作为用户名 清楚地看到 我需要生成一次随机数 并在 3
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • MINIX内部碎片2

    我正在用 C 语言编写一些软件 它递归地列出给定目录中的所有文件 现在我需要计算出内部碎片 我花了很长时间研究这个问题 发现 ext2 上的内部碎片只发生在最后一个块中 我知道理论上你应该能够从索引节点号获得第一个和最后一个块地址 但我不知
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap

随机推荐

  • Bash 正则表达式在句子中查找特定单词

    我有一句话是这样的 The dog jumped over the moon because he likes jumping 我想找到所有匹配的单词jump i e jumped and jumping 我怎样才能做到这一点 目前我有一个
  • 从 Internet 读取 Inno Setup 加密密钥而不是密码框

    我希望设置从 HTTP 读取密码GET请求而不是直接来自用户 有什么方法可以绕过密码框并执行此操作吗 使用读取密钥WinHttpRequest对象 将其插入密码框并提交密码页面 Setup Password 123 Encryption y
  • 获取列值不为 NULL 的每个列计数

    我有一个表 表中有 5 列 我想要列值不为空的每一列的行数 column1 column2 column3 column4 column5 1 2 2 2 2 2 2 2 NULL 2 3 NULL 2 2 NULL NULL NULL 2
  • 如何使用 Capybara + Poltergeist 将文本设置到 Summernote 文本区域

    我有一个正在使用的文本区域夏日笔记我给它设置了 onChange 事件 我想用 RSpec Capybara Poltergeist 编写测试来确认 onChange 事件正常工作 据我检查 浏览器中显示的文本区域实际上是带有 note e
  • 在用户登录期间,使用正确的用户名和密码进行身份验证不会返回 None

    我的用户登录在身份验证过程中存在一些问题 我正在使用 Django 1 9 和 Python 3 6 这是我的代码存储库 用户 验证 用户名 用户名 密码 密码 将用户返回为无 这就是我的帐户 视图 py寻找登录 def register
  • 禁用特定应用程序的对讲

    我有一个为盲人修改Android手机的项目 因此我使用Android文本语音转换 我已经成功使用 TTS 库创建了一个 SMS 和电话应用程序http code google com p eyes free 并使用 myTTS speak
  • PHP 在关闭主窗口时销毁会话

    如何在关闭浏览器时销毁会话 当浏览器窗口关闭时 会话应终止 现在 如果我关闭窗口并输入应用程序 URL 它就允许我访问应用程序 本机 php 会话会在浏览器关闭时过期 只要您不修改会话 cookie 过期时间 就应该没问题 如果这种情况没有
  • 为什么纯 IEnumerable 的内容对于 WPF DataGrid 是不可见的?

    假设我有一个数据网格 其中 itemssource 绑定到属性 Collection 例如 IEnumerable 当然 我为其编写了适当的 getter 和 setter 现在 当我分配给这个属性 集合 时 只是 IEnumerable
  • 编译错误:用户定义类型未定义

    当我尝试编译此代码时 在 VB6 中出现编译错误 用户定义的类型未定义 谁能告诉我需要做什么来解决这个错误 以下是我收到错误的行 Public Conn As ADODB Connection Public rs As ADODB Reco
  • 为什么需要 virtual 关键字?

    换句话说 为什么编译器不 知道 如果函数的定义在派生类中发生更改 并且指向该派生类动态分配的内存的指针调用更改后的函数 那么该函数特别应该被称为而不是基类的 在什么情况下 使用 virtual 关键字对程序员没有好处 virtual关键字告
  • 适用于 Android 的离线导航软件 - 有什么?

    我正在寻找适用于 Android 平台的导航软件 我有一些要求 离线地图 地图应存储在设备 存储卡上 因此不需要互联网连接 应该有某种方式 通过代码 与应用程序交互 发送路线请求 也许获取当前位置 将应用程序带到前台 后台等 API 以便可
  • 如何使用 PyOpenGL 渲染文本?

    我正在学习现代 openGL 目前我在渲染文本方面遇到了麻烦 我正在关注这个tutorial这是用 C 编写的 但我正在尝试用 python 实现 这是我的代码 from OpenGL GL import from OpenGL GLU i
  • 如何获取lxml中元素的路径?

    我正在使用 python 中的 lxml 中的 XPath 在 HTML 文档中进行搜索 如何获取某个元素的路径 这是 ruby nokogiri 的示例 page xpath text each do textnode path text
  • 使用flexbox为div设置相等的高度(取决于最短的)[重复]

    这个问题在这里已经有答案了 很明显如何使用 Flexbox 使两个 div 与最高的 div 具有相同的高度 但对我来说 不清楚如何根据最短的 div 设置相等的高度 例如 我连续有两个 div 第一个 div 高度取决于内部图像的大小 所
  • 在自定义控件上显示触摸键盘

    The 触摸键盘示例展示了一种让开发人员在用户触摸自定义控件时通知系统显示触摸键盘的方法 可能在平板电脑模式下 有人指出 在PC上 您可以通过实现TextPattern提供程序接口 ITextProvider 和ValuePattern提供
  • Java中如何设置类路径?

    我有很多 jar 文件要添加到我的类路径中 因此每次编译 java 文件时我都会得到如下命令 javac cp commons digester 2 1 commons digester 2 1 jar lucene core 3 0 3
  • 在 Bash 命令提示符下添加 git 分支

    我尝试在 bash 提示符上添加我当前正在处理 签出 的 git 分支 但没有成功 同时保留显示活动目录 文件的当前路径完好无损的 我家里有一个 bashrc 文件 但我也看到很多人提到 profile 文件 git 1 9 3 或更高版本
  • 将字符串转换为整数/浮点/双精度

    我正在尝试将字符串转换为Integer Float Double但我有一个NumberFormatException 我的字符串是37 78584 现在我将其转换为我得到的任何一个NumberFormatException 我怎样才能转换这
  • Internet Explorer 11 中对 ES6 的支持

    根据这个页面http kangax github io compat table es6 ES6 功能未在 IE 11 中实现 IE 11 是否有有一天实现它们的计划 或者我可以忘记它吗 是否有一个页面可以解释他们对该主题的意图 我在某处读
  • C++ 受保护/公共重载

    我有一堂这样的课 class Foo public Foo for int i 0 i lt 10 i v push back i const vector