C ++到C#移植

时间:2012-06-22 10:24:25

标签: c# c++

如何将此代码(c ++)移植到c#?

template <class entity_type>
class State {
public:
    virtual void Enter(entity_type*) = 0;
    virtual void Execute(entity_type*) = 0;
    virtual void Exit(entity_type*) = 0;
    virtual ~State() { }
};

4 个答案:

答案 0 :(得分:6)

假设它真的是一个纯粹的抽象基类,它的外观如下:

interface State<T>
{
    void Enter(T arg);
    void Execute(T arg);
    void Exit(T arg);
};

传递约定的确切参数虽然很尴尬。如果不知道你想要做什么,很难确切地说你应该在C#中做些什么。可能void FunctionName(ref T arg)可能更合适。

答案 1 :(得分:3)

有些事情:

interface State<T> : IDisposable
{
    void Enter(T t);
    void Execute(T t);
    void Exit(T t);
}

答案 2 :(得分:1)

public abstract class State<entity_type>
    {
        public abstract void Enter(entity_type obj);
        public abstract void Execute(entity_type obj);
        public abstract void Exit(entity_type obj);
    }

这似乎有效:D

答案 3 :(得分:-1)

你可以这样写

abstract class State<T> : IDisposable where T : EntityType
{
    public abstract void Enter(T t);
    public abstract void Execute(T t);
    public abstract void Exit(T t);

    public abstract void Dispose();
}

将您的T修复为EntityType类。