如何从派生类访问模板参数
How to access template parameters from a derived class?
我有一个
template <int N> class Base
和
class Derived : public Base<1>
。有没有办法从Derived::myMethod()
的定义内部访问int N
(而不是得到编译器错误"使用未声明的标识符'N'")?
更准确地说,我想做
void Derived::myMethod() {
for (int n=0; n<N; n++) { ...
template 参数具有模板的作用域,但您可以在模板中定义派生类可以使用的嵌套常量:
template <int N> class Base {
public: // or protected:
static const int theN = N;
};
另一种选择是可以模板化派生类:
template <int N>
class Derived : public Base<N>
{
void myMethod()
{
for (int i = 0; i < N; ++i)
//
}
};
这就是我上面评论的意思:
class Base{
public:
Base(int value = 1) : value_(value){} //don't need to use default param but can
private:
int value_
}
class Derived : public Base
{}
为什么要模板化 N? 你需要让整个班级专业化吗? 另一种方法是"虚拟化"根据您设置为"专用化"的条件从模板调用的非成员函数。
编辑:模板化类中方法的部分专用化
相关文章:
- 使用不带参数的函数访问结构元素
- 从C++dll访问C#中的一行主要参数
- 函数是否可以访问传递给main()的参数
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 如何从其他功能C++访问参数?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如何访问模板参数自己的模板参数?
- 如何访问QT中传递给程序的参数
- 从模板参数包实例化的访问类实现
- 限制多模板参数朋友函数可访问的类实例的范围
- 在将向量作为参数传递给函数后,我无法访问函数中向量的元素
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 从析构函数访问模板类构造函数的参数,可以吗?
- 仅当构造函数具有参数时,C++ 公共成员才能访问
- C/C++ 包含点的宏参数(成员访问运算符)
- 处于默认参数位置的 Lambda 无法访问好友成员。这是编译器错误吗?
- 在函数中使用 const 引用参数访问函数中成员的最佳实践 C++.
- 使用 cv::P oint 作为参数访问图像
- 在 c++ 中使用数组参数访问单个元素的字符
- 是否可以从参数访问成员名称