gpt4 book ai didi

c++ - 从具有模板化构造函数的非模板化类继承 - 如何解决歧义?

转载 作者:搜寻专家 更新时间:2023-10-30 23:50:58 25 4
gpt4 key购买 nike

假设我们有一个类,MyParent:

class MyParent
{
public:
template<namespace T>
MyParent()
{
T* Something;
}
};

还有一个派生类,它使用这个构造函数:

class MyDerived : public MyParent
{
public:
MyDerived()
: MyParent<int>()
{
}
};

然后我得到一个编译错误,因为有歧义。编译器认为 int 是类的模板参数,而不是构造函数。

如何指定我希望 int 成为构造函数的参数?

最佳答案

这是不可能的。从标准部分 14.8.1 Explicit template argument 中,它指出:

[Note: because the explicit template argument list follows the function template name, and because conversion member function templates and constructor member function templates are called without using a function name, there is no way to provide an explicit template argument list for these function templates. ]

如评论中所述,您需要让构造函数采用 T(或 const T &)类型的参数,然后让 MyDerived 使用 int 类型的参数调用 MyParent::MyParent

关于c++ - 从具有模板化构造函数的非模板化类继承 - 如何解决歧义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/425457/

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