gpt4 book ai didi

c++ - 自动协变类推导

转载 作者:行者123 更新时间:2023-11-30 04:12:50 24 4
gpt4 key购买 nike

有这样一个类的最巧妙的方法是什么,

class Object
{
public:
virtual Object* Find(string name);
};

实现后其派生类的 Find() 方法自动返回派生类类型,而无需执行如下操作:

class DerivedObject : public Object
{
public:
DerivedObject* Find(string name);
};

手动?

额外:实际上在我的实际实现中它是一堆static 函数,而不是virtual 函数。我有像 static Object* Object::Find(string name)static GameObject* GameObject::Find(string name) 这样的函数。

最佳答案

去掉virtual 函数,代之以写一个自由函数。

template<typename T>
T* Find(T& object, string name) {
}

你必须通过 Find(derivedobject,name) 而不是 derivedobject.Find(name) 来调用它,否则我认为这会如你所愿.

如果您需要它访问protected 数据,您还必须在Object 中将其声明为friend。只需将以下行放在 Object 类中即可。

template<typename T>
friend
T* Find(T& object, string);

关于c++ - 自动协变类推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670973/

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