如何实现一个可以作为模板参数传递的类
How can I implement a class which can passed as a template argument?
我想实现一个类,称之为K,它将在作为模板类C的模板参数传递时进行编译。下面是代码示例:
template <typename T>
class C
{
typename T::counter_type counter;
public:
C() : counter(0) {}
void Do (T t)
{
if (t>0) ++counter;
}
};
class K
{
};
有人能帮助我了解实施情况吗?
您所拥有的是一个模板类。模板参数基本上是一种定义内部数据类型类型的数据类型。
想想std::vector的一个实现。它有一个内部数组,但是什么类型的?可以指定该类型作为模板参数。
在您的类中,您声明类型为typename T::counter_type
的计数器(请参阅此处了解有关typename的更多信息:何时需要"typename"关键字?),然后您有一个将计数器初始化为0的构造函数和一个方法Do,该方法接受类型为T的参数(在对象声明中指定)并对其执行某些操作。
将模板视为简写。而不是:
class C_int
{
int counter;
public:
C() : counter(0) {}
void Do (int t)
{
if (t>0) ++counter;
}
};
class C_long
{
long counter;
public:
C() : counter(0) {}
void Do (long t)
{
if (t>0) ++counter;
}
};
您现在分别拥有C<int>
和C<long>
。
相关文章:
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 将可变参数从一个函数传递到另一个函数
- C++:如何做一个链表,结构作为参数传递?
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- C++ 如何根据作为输入传递的参数调用一个构造函数或另一个构造函数?
- 将参数从一个函数传递到另一个函数(没有模板) - C++
- 在 c++ 中,如何将当前函数的所有参数传递给另一个函数?
- 使用模板可变参数函数将多个参数传递给另一个函数
- 如何将一个函数的返回值作为另一个函数的参数传递?
- 在C++中传递一个对象作为参数
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 如何将模板化类实例作为模板参数传递给另一个模板?
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 如何将一个类作为参数传递给另一个类构造函数?
- 将指向数组的指针作为函数参数传递,这本身就是另一个函数的返回值?
- 将参数传递给另一个可变参数函数
- 是否可以创建一个指向对象的智能指针并将此智能指针作为参数传递给构造函数?
- SWIG-为具有四个参数的函数创建一个类型映射,该参数传递一个字节数组
- C++:如何为多个参数传递一个变量