gpt4 book ai didi

c++ - 模板多重继承歧义符号错误

转载 作者:行者123 更新时间:2023-11-28 05:40:57 25 4
gpt4 key购买 nike

我遇到了一个真正的问题,可以这样总结:

template <typename BaseType>
class TemplateClass
{
public:
template <typename BaseTypee, unsigned PrefixID>
static void deleteType(unsigned int ObjID)
{

}
};

class ParentClass:
public TemplateClass<ParentClass>
{
};

class ChildClass:
public ParentClass, public TemplateClass<ChildClass>
{
using TemplateClass<ChildClass>::deleteType; //Ambigious Symbol Compiler-Error

};

我这样调用函数 deleteType:

TemplateClass<ChildClass>::deleteType<ChildClass, ChildType>(ChildType);

我想在 ChildClass 类中调用函数 deleteType,但没有任何声明,该函数将在 ParentClass 中调用。 p>

如何消除使用短语中的模糊符号错误?可以用不同的方法完成我的任务吗?

仅供引用:最初,我尝试调用该函数(没有任何变化)

ChildClass::deleteType<ChildClass, ChildType>(ChildType);

有趣的是:尽管有红色下划线,它仍然可以编译。如果我调试,模板仍将在 ParentClass 中调用,在编译时既不会发出警告也不会抛出错误..

最佳答案

将您的using 语句放在public: 部分:

template <typename BaseType>
class TemplateClass
{
public:
template <typename BaseTypee, unsigned PrefixID>
static void deleteType(unsigned int ObjID)
{
}
};

class ParentClass:
public TemplateClass<ParentClass>
{
};

class ChildClass:
public ParentClass, public TemplateClass<ChildClass>
{
public:
using TemplateClass<ChildClass>::deleteType;
};

int main() {
ChildClass::deleteType<void, 0>(0);
}

关于c++ - 模板多重继承歧义符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37101120/

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