gpt4 book ai didi

c++ - 从静态派生的基类实现虚方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:37 25 4
gpt4 key购买 nike

我有一个带有虚方法的抽象基类。在派生类中,实现了这个方法。但是,我希望派生类中的函数作为静态方法,以便能够在不实例化该类的对象的情况下调用该函数。

class Base 
{
virtual double Foo(double rParam) const;
};

class Derived1 : public Base
{
static double Foo(double rParam);
};

class Derived2 : public Base
{
static double Foo(double rParam);
};

本质上,Derived1 和 Derived2 提供静态函数的不同实现(不依赖于对象数据),但我希望这些函数是虚拟的,以便能够在基类的其他函数中调用这些函数。我现在看到的唯一解决方案是在派生类中实现两个成员函数,一个是来自基类的虚函数,另一个(具有不同的名称)是静态函数。为了防止源代码加倍,虚函数可以直接调用静态函数(可以内联)。还有其他解决方案吗?

class Derived : public Base
{
double Foo(double rParam)const
{
return FooStatic(rParam);
}

inline static double FooStatic(double rParam);
};

最佳答案

我确实认为,就坚持良好的 OO 实践而言,您拥有的 FooStatic 方法是实现它的最佳方法。本质上,您的非静态 Foo 重写就像函数指针一样工作到您的静态版本中。

(强调“工作方式”:您实际上不能直接使用函数指针,因为您对 Foo 的重写必须在调用之前丢弃对 this 的引用FooStatic.)

关于c++ - 从静态派生的基类实现虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18514655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com