gpt4 book ai didi

C++ 静态虚拟成员?

转载 作者:IT老高 更新时间:2023-10-28 11:33:09 26 4
gpt4 key购买 nike

在 C++ 中是否可以有一个既是 static 又是 virtual 的成员函数?显然,没有一种直接的方法可以做到这一点(static virtual member(); 是编译错误),但至少有一种方法可以达到相同的效果吗?

IE:

struct Object
{
struct TypeInformation;

static virtual const TypeInformation &GetTypeInformation() const;
};

struct SomeObject : public Object
{
static virtual const TypeInformation &GetTypeInformation() const;
};

在实例 (object->GetTypeInformation()) 和类 (SomeObject::GetTypeInformation( )),这对于比较有用,对模板至关重要。

我能想到的唯一方法是为每个类编写两个函数/一个函数和一个常量,或者使用宏。

还有其他解决方案吗?

最佳答案

不,没有办法,因为调用 Object::GetTypeInformation() 会发生什么?它不知道要调用哪个派生类版本,因为没有与之关联的对象。

您必须将其设为非静态虚函数才能正常工作;如果您还希望能够在没有对象实例的情况下以非虚拟方式调用特定派生类的版本,则还必须提供第二个冗余静态非虚拟版本。

关于C++ 静态虚拟成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1820477/

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