gpt4 book ai didi

C++ 静态虚拟成员?

转载 作者:太空宇宙 更新时间:2023-11-04 13:39:27 28 4
gpt4 key购买 nike

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

即:

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/28287360/

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