通过模板参数C++将值传递给内部类



试图通过模板agrument将值传递给嵌套类,但出现了一些混乱:

template<typename A,typename B>
class outter{
int a;
T* p;
////...////
template<typename N=int> class inner;
inner do_something(){
return inner<a>(p)
}
}
template<typename T,typename A, typename N=int>
class outter<T,A>::inner<N>{
sz=N;
}

任务是为具有范围控制的向量创建一个迭代器。目前,我还停留在内部类模板声明和传递参数上。拜托,如果可能的话,我需要预付款。谢谢

对于内部类,您有template <typename N>,这意味着您的N是一个类型,而不是一个值,因此,您不能将其分配给值。

要解决您的问题,请尝试使用template <int N> class inner;,并在底部使用相同的方法修复template<typename T, typename A, int N>

编辑

刚刚注意到,在底部有内部类定义。你想要这个sz是什么?它是值还是类型?如果你想让它成为一个值,你应该写

template<typename T,typename A, int N> // this last int determines also the type to be used down below v
class outter<T,A>::inner<N>{
int sz=N; // this int comes from the upper side ^
}

如果您希望sz是定义内部类中大小的类型,那么将上下部分保持为<..., typename N = int>,并将using放在sz=N;之前

template<typename T,typename A, typename N=int>
class outter<T,A>::inner<N>{
using sz=N;
}

如果您希望通过模板指定N类型和值,请遵循以下示例:

template </*outer template params*/>
class outer {
template <typename SIZE_TYPE, SIZE_TYPE VALUE = SIZE_TYPE()>
class inner;
};
template </*outer template params*/, typename SIZE_TYPE, SIZE_TYPE VALUE = SIZE_TYPE()>
class outer</*params*/>::inner<SIZE_TYPE, VALUE> {
using size_type = SIZE_TYPE;
size_type my_value = VALUE;
}

编辑2

如果你想了解这里发生了什么,请阅读更多关于模板实例化的信息。

最新更新