相关疑难解决方法(0)

如何调用模板成员函数?

可能重复:
从模板函数调用的模板类的C++模板成员函数

template<class T1>
class A 
{
public:
    template<class T0>
    void foo() const {}
};

template<class T0,class T1>
void bar( const A<T1>& b )
{
    b.foo<T0>();  // This throws " expected primary-expression before ‘>’ token"
}
Run Code Online (Sandbox Code Playgroud)

我可以改成它

b->A<T1>::template foo<T0>();
Run Code Online (Sandbox Code Playgroud)

编译好.不过我也可以改成它

b.A<T1>::template foo<T0>();
Run Code Online (Sandbox Code Playgroud)

编译也很好.是吗?

如何在原始代码的意义上正确调用模板成员函数?

c++ templates

29
推荐指数
2
解决办法
2万
查看次数

以类为参数调用模板类的静态模板方法

static具有(i)模板和(ii)类本身作为参数的模板类的方法没有错,是吗?考虑上课

template<class Projection>
struct FrameData {
    // ...
    template <bool devPtr>
    static void allocate(FrameData<Projection> &data) {
        // ... do allocations ...
    }

}
Run Code Online (Sandbox Code Playgroud)

这是在文件头中声明的A.在世界的其他地方,我有类似的东西

template <class Projection>
void some_method(FrameData<Projection> &m_data) {
    FrameData<Projection>::allocate<true>(m_data);
}
Run Code Online (Sandbox Code Playgroud)

我结束了一些

error: reference to overloaded function could not be resolved; did you mean to call it?
Run Code Online (Sandbox Code Playgroud)
  • .template对于像这里的答案这样的static方法,是否存在某种类似的魔法?
  • 参数FrameData<Projection>是问题吗?它尚未完全定义?

在这个世界的其他地方技术上是在一个源文件中,底部有一些明确的实例化,但是我将这一切都放在一个文件中,并且具有相同的错误.感谢您的任何见解,请不要在非标头模板上羞辱我.这不是我的选择.

c++ templates class c++11

1
推荐指数
1
解决办法
536
查看次数

标签 统计

c++ ×2

templates ×2

c++11 ×1

class ×1