Как определить общий / шаблонный класс, как пример C # ниже - PullRequest
1 голос
/ 03 февраля 2012

В C #:

public sealed class StateMachine<TState, TTrigger>

Я бы хотел написать эквивалент C ++.

Ответы [ 3 ]

3 голосов
/ 03 февраля 2012

Как это:

template <typename TState, typename TTrigger>
class StateMachine
{
    //...
};
1 голос
/ 03 февраля 2012

На этом сайте есть довольно хорошее объяснение того, как создавать шаблоны классов.Пример:

// 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;
}

Используйте это в сочетании с этим предыдущим вопросом переполнения стека для достижения запечатанного аспекта класса.

0 голосов
/ 03 февраля 2012

Вы можете использовать то, что предложили Стюарт и Xeo, и если вы хотите, чтобы класс был здесь запечатан, это ссылка , которая объясняет, как это сделать.

РЕДАКТИРОВАНИЕ: это еще лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...