gpt4 book ai didi

c++ - 如何避免使用类型名称类型

转载 作者:行者123 更新时间:2023-11-30 05:45:11 26 4
gpt4 key购买 nike

我的基类中有一个声明:

template<class PROTOCOL>
static Packet* serialize(uint packetId, QVariantHash data = QVariantHash());

然后当我从基类继承时,我可以像这样使用静态方法:

GameProtocol::serialize<GameProtocol>(0); // This works fine

我的问题是,我必须更改什么才能使调用 GameProtocol::serialize(0) 正常工作(即没有模板声明)。

我想保持方法静态,因为它简化了基类的其他区域。我知道这很困难,因为在 C++ 中不能覆盖静态方法,但肯定有一种使用模板魔法的方法。

最佳答案

GameProtocol 似乎恰好是您的派生类:只需添加一个 static 方法 serialize() 即可转发到相应版本的基类:

class GameProtocol: public Protocol {
// ...
public:
static Packet* serialize(uint id,
QVariantHash h = QVariantHash()) {
return Protocol::serialize<GameProtocol>(id, h);
}
// ...
};

关于c++ - 如何避免使用类型名称类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29481166/

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