gpt4 book ai didi

c++ - 如何在来自不同模板类的模板类中使用嵌套模板类

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:57 26 4
gpt4 key购买 nike

首先,我希望问题标题在某种程度上是有意义的。

我有以下类结构:

class A : public Singleton<A>
{
public:
template <typename T> class Buffer
{
public:
//ctor & dtor
T* get() { return ptr; }
private:
T* ptr;
};

// class A stuff
};

此类应作为模板参数传递给处理程序类,并在该类的模板函数中使用:

template <class MODEL> class Handler
{
public:
// ctor & dtor
template <typename T> typename MODEL::Buffer<T>* create(...) // error c2988
{ // create a buffer }
};

然而,编译器无法确定正确的类型名称并抛出错误 C2988:无法识别的模板声明/定义(VS 2012 中的 vc++ 2012 年 11 月 CTP 编译器)。我找不到任何解决方案来告诉编译器如何处理内部类模板。所以问题是:如何使这项工作发挥作用?

任何帮助将不胜感激。

最佳答案

你需要帮助编译器消除歧义并告诉它什么是Buffer:

template <typename T> typename MODEL::template Buffer<T>* create(...);
// ^^^^^^^^

参见 this Q&A了解更多信息。

关于c++ - 如何在来自不同模板类的模板类中使用嵌套模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18585078/

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