从部分专用模板方法调用模板非静态方法
calling template nonstatic method from partially specialized template method
以下method
调用失败,因为它被声明为非静态函数。我不明白为什么。
struct Test
{
template<typename T> method(){return T();}
template<typename S> struct W;
template<> struct W<int>
{
int meth()
{
return method<int>(); // method can't be called this way
}
};
};
这与模板无关,我们可以稍微简化一下整个事情:
struct Outer
{
void outerF() { }
struct Inner
{
void innerF() { outerF(); }
};
};
虽然在另一个外部类中定义,但内部类独立于外部类存在。为了能够调用外部类的函数,你需要后一个类的实例,但没有任何自然(隐式(的实例,所以你需要显式提供一个:
struct Outer
{
void outerF() { }
struct Inner
{
void innerF() { o.outerF(); }
private:
Outer o;
};
};
很有可能,您更愿意以引用或指针的形式引用外部类,在构造函数或(仅在指针的情况下(setter 中初始化。
相关文章:
- 如何通过命名空间调用非静态方法
- 调用从模板派生的类的静态方法,而不指定模板
- 如何在 c++ 中异步调用静态方法?
- 从另一个标头中的标头调用静态方法
- 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用方代码
- 从部分专用模板方法调用模板非静态方法
- 在子类上调用模板化静态方法时获取类的类型名
- 调用没有主体的未实现静态方法
- 从静态方法调用静态函数指针
- Cython:无法调用共享库的非静态方法
- 调用静态方法,收到错误:LNK2019
- 从线程内的对象调用静态方法
- 如何在C++中宏 #define 静态方法调用?
- 测试项目在访问私有静态方法时遇到问题,尽管我从未直接调用过它
- 在不指定实例化的情况下调用类模板的静态方法的方法
- C 调用静态方法
- 当从静态方法调用非静态Attach时,使用std::packaged_task对CAsyncSocket Detach套
- C++:从静态方法调用继承的静态方法
- C++使用*this从静态方法调用一个抽象方法
- 是否可以从 cpp 中定义的静态方法调用私有构造函数