如何定义通用/模板化类,如下面的C#示例

时间:2012-02-03 13:21:44

标签: c# c++ templates

在C#中:

public sealed class StateMachine<TState, TTrigger>

我想写一个C ++等价物。

3 个答案:

答案 0 :(得分:3)

像这样:

template <typename TState, typename TTrigger>
class StateMachine
{
    //...
};

答案 1 :(得分:1)

This site对如何制作模板类有很好的解释。例如:

// function template
#include <iostream>
using namespace std;

template <class T>
T GetMax (T a, T b) {
  T result;
  result = (a>b)? a : b;
  return (result);
}

int main () {
  int i=5, j=6, k;
  long l=10, m=5, n;
  k=GetMax<int>(i,j);
  n=GetMax<long>(l,m);
  cout << k << endl;
  cout << n << endl;
  return 0;
}

将此项与this previous Stack Overflow question结合使用,以达到班级的密封性。

答案 2 :(得分:0)

你可以使用Stuart和Xeo提出的建议,如果你想让课程密封在这里,link解释了如何做到这一点。

已编辑:this甚至更好。