【发布时间】:2014-09-25 12:18:45
【问题描述】:
在c++中,有没有一种标准的方法可以在基类中创建一个可以使用派生类变量的函数?
class Foo{
private:
int x;
public:
Foo(){
x = 2;
}
void print(){
std::cout << x << std::endl;
}
};
class Derived : public Foo{
private:
int x;
public:
Derived(){
x = 4;
}
};
void main()
{
Derived a;
a.print();
}
此代码打印基类 ( 2 ) 的变量。有没有办法让许多派生类使用的函数使用类的私有变量而不将它们作为参数传递?
编辑:我的意图是避免为每个派生类编写相同的代码。 例如,我想要一个 get_var(),但是这个函数应该返回那个自己的类的变量。我知道我可以制作 virtual 和 override,但我一直在寻找一种不需要一次又一次地编写的方式。
【问题讨论】:
-
基类不应该知道它的派生类型。要求这是一个糟糕的设计。
-
你需要实现一个虚拟的
getA方法。 -
如果您在 Foo 中将 'x' 声明为受保护,而不在 Derived 中再次声明它。这就是你想要的吗?
-
不,我希望我的派生类有一个功能相同的函数,但有自己的变量。每个都有不同的值。
-
@user3023605 使
print()成为虚拟并在派生类中覆盖它