作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想结合多态性和友元的概念。我正在使基类的纯虚拟成员函数成为另一个类的 friend 。然后我想在从该基类派生的类中覆盖这个纯虚成员函数,并访问具有 friend 等功能的类的私有(private)成员数据。请参阅下面的代码片段。当我引用 my_int
时,编译器会报错在派生类成员函数add()
.我知道友元是一对一的关系,但我想知道是否有任何方法可以实现多态性。我是否只需要使foo()
的不同派生类的成员函数成为 friend ?类(class)?
class foo {
private:
int my_int{};
public:
friend virtual int base::add();
};
class base {
public:
virtual int add() = 0;
};
class derived_1 : public base {
public:
int add() {
return my_int + 1;
}
};
class derived_2 : public base {
public:
int add() {
return my_int + 2;
}
}
最佳答案
首先,对于您所显示的内容,它不起作用,因为 my_int 是 foo 的成员,但在基类树中没有“foo”可以从中获取成员。
简单的答案是让函数接受一个 int 参数并完全取消使用 friend 。
struct derived2 : base
{
int add(int arg) { return arg + 2; }
};
int get_arg(foo & f) { return f.my_int; }
关于c++ - C++中具有友元函数的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61193290/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!