c++ - 从部分专用的模板方法调用模板非静态方法
问题描述
以下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;
};
};
很可能,您宁愿以引用或指针的形式引用外部类,在构造函数或(仅在指针的情况下)设置器中初始化。
推荐阅读
- cmake - cmake中带有.o的文件扩展名
- neo4j - neo4j CYPHER 非对称查询响应
- optimization - Multi-Objective Optimization in genetic Algorithm
- dropbox-api - Dropbox Explorer token works with/v2/move but not in when using token generated Dropbox app console
- bash - 在删除的文件上运行 bash 脚本
- macos - How to record audio and video on macos with ffmpeg?
- sas - SAS PROC FREQ BY variable not sorted Ascending how to display table
- python - Can scipy.stats.wasserstein_distance be used with empirical distributions of different (unequal) sizes?
- asynchronous - 在 F# 中的异步块中返回位置
- html - WooCommerce 购物车页面:更改结帐按钮的位置