访问派生类中的基类成员

2024-03-20

我有一个简单的课程如下

class A {
protected:
    int x;
};
        
class B : public A {
public:
    int y;

    void sety(int d) {
        y = d;
    }

    int gety() {
        return y;
    }
};
    
int main() {
    B obj;
    obj.sety(10);
    cout << obj.gety();
    getch();
}

我怎样才能设置的值protected实例变量A::x从派生的实例class B无需创建实例class A.

编辑:我们可以访问的值A::x使用 B 的对象?喜欢obj.x?


B is an A,因此创建一个实例B正在创建一个实例A。话虽这么说,我不确定你的实际问题是什么,所以这里有一些代码希望能够澄清事情:

class A
{
protected:
    int x;
};

class B : public A
{
public:
    int y;

    int gety() const { return y; }
    void sety(int d) { y = d; }

    int getx() const { return x; }
    void setx(int d) { x = d; }
};

int main()
{
    B obj;

    // compiles cleanly because B::sety/gety are public
    obj.sety(10);
    std::cout << obj.gety() << '\n';

    // compiles cleanly because B::setx/getx are public, even though
    // they touch A::x which is protected
    obj.setx(42);
    std::cout << obj.getx() << '\n';

    // compiles cleanly because B::y is public
    obj.y = 20;
    std::cout << obj.y << '\n';

    // compilation errors because A::x is protected
    obj.x = 84;
    std::cout << obj.x << '\n';
}

obj可以访问A::x只是作为一个例子A可以,因为obj隐含地是一个实例A.

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

访问派生类中的基类成员 的相关文章

  • 我的 std::hash for std::tuples...有什么改进吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有些人可能已经注意到 std hash 不支持元组 所以我添加了一个重载 它看起来比我到目前为止看到的解决方案 更好 有人有进一步减少这段代码的
  • Visual Studios 2015 中的“恢复 NuGet 包”没有执行任何操作

    我将解决方案从 SVN 拉入 Visual Studios 2015 代码中的一些 使用 引用出现错误 因此我尝试在右键单击 解决方案 中的解决方案时运行 恢复 NuGet 包 选项探索者 这没有任何作用 我必须手动进入 nuget 管理器
  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 原子存储抛出错误

    我最近升级到了 C 11 兼容编译器 并且尝试将一些代码从 boost 更新到 c 11 标准 我在使用atomic store转换一些代码时遇到了问题 这是一些简单的测试代码 似乎会引发编译器错误 int main std shared
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 节点*链表中的下一个

    我是数据结构和算法的新手 我遇到了以下代码 typedef struct node int data node next 谁能告诉我为什么我们要声明节点 next next 不能声明为 int next 吗 因为你希望能够做到n gt ne
  • 使用 OleDbCommand / OleDbDataAdapter 读取 CSV 文件

    我不明白为什么 但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时 在这两种情况下 生成的数据结构良好 它识别文件头中的列 但行数据都是空字符串 我之前已经成功进行过多次 CSV 处理 因此我
  • 从 C# 调用时无法识别 Powershell 命令

    这是这个的延续Question https stackoverflow com questions 66280000 powershell object returns null 66280138 noredirect 1 comment1
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 在特定线程上运行工作

    我想要一个特定的线程 任务队列并在该单独的线程中处理任务 应用程序将根据用户的使用情况创建任务并将其排队到任务队列中 然后单独的线程处理任务 即使队列为空 保持线程活动并使用它来处理排队任务也至关重要 我尝试过几种实现TaskSchedul
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • Unity - 在生成时获取随机颜色

    我有一个小问题 我想在我的场景中生成四边形 它们都应该有红色或绿色作为材质 但 Random Range 函数只能是 int 我该如何解决它 void SpawningSquadsRnd rndColor 0 Color red rndCo
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段

随机推荐

  • 根据输入将日期添加到框架中

    我有一个 R 数据集的输入变量 用于评估工具列表 它看起来如下 type lt as integer readline prompt Enter a Barcode 我有两列 一列包含通过输入语句找到的信息 一组条形码编号 另一列包含将特定
  • VS导出的模板不适用于新项目

    我已将以下工作项目导出为 VS 模板 该模板使用 ASP NET 5 RC1 https github com mohasi vs spa template https github com mohasi vs spa template 当
  • Python defaultdict 行为可以通过多处理实现吗?

    我不确定这是否可能 希望如此 我有一个数据集 我通过使用 defaultdict 的过程运行它 DefaultDict 有一个功能 如果您搜索某些内容并且它不在字典中 它就会被添加 在我的例子中 我正在搜索它们正在添加的值 然后我稍后会搜索
  • 我正在使用 PhoneGap,在我的页面中我尝试使用 FontAwesome 但它不起作用?

    我使用 PhoneGap for Android 创建了应用程序 并在应用程序中使用 FontAwesome 图标 但我看不到图标 只能看到方块 我像这样包含 FontAwesome 我这样使用它 i class icon circle i
  • javascript html5 使用来自不同域的图像绘制图像

    所以我有以下代码 var element document getElementById myCanvas var width element width var height element height var context elem
  • 将地图限制在一定范围内?

    有没有办法设置地图边界并实际上限制用户只能在这些边界内平移 我最接近我需要的是mapView fitBounds方法 但它似乎根本不限制平移 我做错了什么或者这个方法没有达到我的需要吗 我正在使用 SKMaps iOS SDK 版本 2 5
  • 使用 SQL 查找不同值

    显示摘要中含有 discover discoverer discovery discovered discovering 等词的20个奖项的名称和奖项金额 我的查询 SELECT title count award abstract FRO
  • 获取当前活动的键盘语言为 NSLocale

    我已经找到了很多方法 但没有有效的解决方案 这是我尝试过但没有成功的方法 1 简单调用主要语言 UITextInputMode primaryLanguage 总是返回 nil 2 订阅UITextInputCurrentInputMode
  • 如何在给定特定 PID 的情况下终止 Java 中的进程

    如果我有特定的 PID 如何在 Windows 上从 Java 代码中终止特定进程 除了执行特定的操作之外 我不知道任何其他解决方案Windows命令就像Runtime getRuntime exec taskkill F PID 827
  • 为什么在尝试更新 OData 服务时 HttpWebRequest.GetResponse() 会挂起?

    我正在用 C 编写一个 OData 消费者 我可以成功删除一个条目 但由于某种原因 当我尝试更新时 它只是挂起 冻结在 GetResponse 上 它甚至忽略了我的超时 下面是我的测试代码 有什么明智的建议吗 XDocument doc X
  • 在 C 中取消引用字符串文字有什么影响?

    include
  • 在移动设备上拖放 HTML

    当您使用JavaScript向网页添加拖放功能 例如jQuery UI可拖放 时 如何在通过移动设备上的浏览器查看时使其发挥作用 在移动设备上 触摸屏的拖动操作会被拦截手机用于滚动页面等 欢迎所有解决方案 我最初的想法是 为移动设备提供一个
  • scriptcs - 无法读取包

    我关注了一个博客文章 http inaspiralarray blogspot com 2013 08 scriptcs in two minutes html只需两步即可运行 scriptcs 基本上 我是这样做的 powershell
  • 删除不在引号内的哈希注释

    我正在使用 python 来浏览文件并删除所有注释 评论被定义为散列及其右侧的任何内容只要哈希值不在双引号内 我目前有一个解决方案 但它似乎不是最佳的 filelines r re compile for line in f m r spl
  • 如何在 vscode 中将 .css 文件解析为 PostCSS?

    我在项目中使用PostCSS CSS文件的扩展名是 css所以当我打开一个时 它会指示一堆错误 由于 PostCSS 的语法 我已经尝试安装stylelint PostCSS syntax扩展等等 但没有任何效果 如果我将扩展名更改为 sc
  • 对话框中按钮的自定义放置 - jquery ui

    我想将添加到对话框的按钮移动到顶部或左侧 我正在使用 jquery ui 如何做到这一点 添加 ok 后 它会显示在最右端 可以将其放置在周围吗 function dialog message dialog modal true resiz
  • 使 Flexbox 上下颠倒换行

    今天 我正在查看我构建的 选项卡 HTML gizmo 我注意到由于我使用 inline block 来布局选项卡标题 当它们包装时 我会得到如下所示的输出 Apple Banana Cherry Date Elderberry Fig G
  • 使用 Gulp 将 browserify 模块设为外部

    我有一个图书馆lib js我想从中创建lib a js and lib b js并能够从脚本中使用它client js using var a require lib a js 当我只包含已编译的内容时它就可以工作lib js之前的图书馆c
  • 在 Google Apps 脚本中比较日期范围与今天的日期

    我希望使用这篇文章作为参考 将从电子表格中提取的日期与今天的日期进行比较 如何使用 Google Apps 脚本将日期与电子表格进行比较 https stackoverflow com questions 14350671 how do i
  • 访问派生类中的基类成员

    我有一个简单的课程如下 class A protected int x class B public A public int y void sety int d y d int gety return y int main B obj o