gpt4 book ai didi

c++ - 用于继承的模板便捷构造函数

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

我不完全确定我在这里选择了正确的方法,所以我将首先概述问题:

我需要一个基类(可以是抽象的),它为所有它的 child 保存一个方便的构造函数,返回该 child 的静态实例加上接受类型为 boost::tuple<std::string> 的参数。或 boost::tuple<short, int> .

我的基类是什么样的:

class BaseClass{

public:

template<typename TCLASS, typename TUPLE>
static TCLASS* createPacketFromStruct(TUPLE s){
TCLASS* p = new TCLASS();
p->structure = s;
p->createMessageFromStruct();
return p;
}
};

但我无法从该模板中获取静态实例。

最佳答案

您应该能够像这样调用该函数:

MyClass* myClass = BaseClass::template createPacketFromStruct<MyClass,MyTuple>(s);

如果您希望编译器推断模板参数,请更改函数的签名以采用类型为 TCLASS** 的附加参数并像这样调用它:

MyClass* myClass;
BaseClass::template createPacketFromStruct(&myClass, s);

(不确定是否真的需要 template,也许 BaseClass::createPacketFromStruct(&myClass, s); 也可以)

关于c++ - 用于继承的模板便捷构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16166035/

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