0

インターフェイスを作成し、関数の 1 つの戻り値の型をジェネリック (Java のように) にしたい。私はこれを書きました:

    template <class T>
    class IUnionFind {
    public:
     IUnionFind();

     ///@param[in] x
     ///@param[in] y
     virtual void unionSet(int x,int y)=0;
     ///@param[in]
     virtual void find (int x)=0;
     virtual T  make_set(int x)=0;
     virtual ~IUnionFind(){};
     };

そして、Eclipseコンパイラは何も悪いことを非難しません。ただし、次のようなインターフェイスを実装するヘッダーを作成すると:

    template <class T>
    class UnionFindLinkedList : public IUnionFind {
     public:
     UnionFindLinkedList();
     virtual ~UnionFindLinkedList();
     void unionSet(int x,int y);
     void find (int x);
     T  make_set(int x);
    };

ITは、クラス宣言の行の「{」トークンの前に「予期されたクラス名」を非難します;ジェネリックを削除すると、すべてうまくいきます

4

1 に答える 1

3

そのはず

template <class T>
class UnionFindLinkedList : public IUnionFind<T>
{
   .....
于 2012-10-06T04:44:45.010 に答える