-2

私は周りを見回してきましたが、具体的な解決策は思いつきませんでした。適切なコンストラクターではなく、デフォルトのコンストラクターを探しているように聞こえますが、以下にコンストラクターがあります。最初にリストされたコンストラクターとして上に移動してもエラーメッセージは変わらなかったので、私はそれについて間違っています。完全なエラー メッセージは次のとおりです (jGRASP を使用):

In file included from intset.h:47:0,
                 from IntSet.cpp:1:
IntSet.cpp:12:11: error: expected unqualified-id before 'int'
    IntSet(int a, int b, int c, int d, int e) {
           ^
IntSet.cpp:12:11: error: expected ')' before 'int'

IntSet.cpp コードは次のとおりです。

#include "intset.h"
//#include <algorithm>
//#include <iostream>

    int size;
    const int MAXSIZE = 25000;
    bool set[MAXSIZE];
    const int SENTINEL = -1;


    //Constructors
   IntSet(int a, int b, int c, int d, int e) {
      size = a;

      if(b > size) {
            size = b;
        }
        if(c > size) {
            size = c;
        }
        if(d > size) {
            size = d;
        }
        if(e > size) {
            size = e;
        }

        set = new bool[size];
        for(int i = 0; i <= size; i++) {
            if(i == a || i == b || i == c || i == d || i == e) {
                insert(i);
            } else {
                remove(i);
            }
        }
   }

    IntSet(int a, int b, int c, int d) {
        IntSet(a, b, c, d, -1);
    }

    IntSet(int a, int b, int c) {
        IntSet(a, b, c, -1, -1);
    }

    IntSet(int a, int b) {
        IntSet(a, b, -1, -1, -1);
    }

    IntSet(int a) {
        IntSet(a, -1, -1, -1, -1);
    }

    //Copy constructor
    IntSet(const IntSet& x) {
        size = x.size;
        for (int i = 0; i <= x.size; i++ ) {
            set[i] = x.set[i];
        }
    }

    //Destructor
    ~IntSet()
    {
        //for(int i = this.length(); i >= 0; i--) {
        //  this[i]
        //}
    }

    ////////////////////////

    bool insert(int a) {
        if(a <= size && a >= 0) {
            set[a] = true;
            return true;
        }
        else if(a >= 0) {
            //removed "new" from line below
            IntSet temp = IntSet(a);
            &this += temp;
            set[a] = true;
            return true;
        }
        return false;
    }

    bool remove (int a) {
        if (isInSet(a)) {
            set[a] = false;
            return true;
        }
        return false;
    }

    bool isEmpty() {
        bool retVal = true;
        for (int i = 0; i <= size; i++) {
            if (set[i] == true) {
                retVal = false;
            }
        }
        return retVal;
    }

    bool isInSet (int a) {
        if (set[a]){
            return true;
        }
        return false;
    }

    /////////////////////////////////////////////

    IntSet operator + (IntSet a) {
        IntSet c = IntSet(max(size, a.size));
        for (int i = 0; i <= c.size; i++) {
            if (set[i] || a.set[i]){
                c.set[i] = true;
            }
            else {
                c.set[i] = false;
            }
        }
        return c;
    }

    IntSet operator * (IntSet a) {
        IntSet c = IntSet(max(size, a.size));
        for (int i = 0; i <= c.size; i++) {
            if (set[i] && a.set[i]) {
                c.set[i] = true;
            }
            else {
                c.set[i] = false;
            }
        }
        return c;
    }

    IntSet operator - (IntSet a) {
        IntSet c = IntSet();
        c.size = 0;
        for (int i = 0; i <= size; i++) {
            if (set[i] && !a.set[i]) {
                c.set[i] = true;
            }
            else {
                c.set[i] = false;
            }
            c.size++;
        }
        return c;
    }

    IntSet operator = (const IntSet a) {
        return IntSet(a);
    }

    IntSet operator += (IntSet a) {
        return IntSet(operator+(a));
    }

    IntSet operator *= (IntSet a) {
        return IntSet(operator * (a));
    }

    IntSet operator -= (IntSet a) {
        return IntSet(operator - (a));
    }

    IntSet operator == (const IntSet a) const{
        for(int i = 0; i < size; i++) {
            if(set[i] != a.set[i]) {
                return false;
            }
        }

        return true;
    }

    IntSet operator != (IntSet a) {
        for(int i = 0; i < size; i++) {
            if(set[i] != a.set[i]) {
                return true;
            }
        }

        return false;
    }

    IntSet operator << (IntSet a) {
        cout << "{";
        for(int i = 0; i < size; i++) {
            if(set[i]) {
                cout << " " << i;
            }
        }
        cout << "}";
    }

    IntSet operator >> (IntSet a) {
        int index;
        while(cin >> index && index != SENTINEL) {
            insert(index);
        }
    }

添付の intset.h コードは次のとおりです。

#ifndef INTSET_H
#define INTSET_H
#include <iostream>
#include <algorithm>
using namespace std;

class IntSet {

public:
    //Constructors
    IntSet();
    IntSet(int);
    IntSet(int, int);
    IntSet(int, int, int);
    IntSet(int, int, int, int);
    IntSet(int, int, int, int, int);
    IntSet(const IntSet&);  // M: Added the &; must be a pointer or reference
    ~IntSet();

    //Overloaded Operators  M:  Added 'IntSet' in front of the word 'operator.'
    // It was required syntax.
    IntSet operator+(IntSet);
    IntSet operator*(IntSet);
    IntSet operator-(IntSet);
    IntSet operator=(IntSet);
    IntSet operator+=(IntSet);
    IntSet operator*=(IntSet);
    IntSet operator-=(IntSet);
    IntSet operator==(IntSet);
    IntSet operator!=(IntSet);
    IntSet operator<<(IntSet);
    IntSet operator>>(IntSet);

    //Functions
    bool insert(int);
    bool remove(int);
    bool isEmpty();
    bool isInSet(int);

private:
    const int MAXSIZE;
    int size;
    bool set[];
    const int SENTINEL;
};

#include "IntSet.cpp"
#endif

私はヘッダファイルの経験があまりないので、何かを間違ってフォーマットしても驚かないでしょうが、教授から提供された他のサンプルをたくさん見ていますが、私のものには何も変わっていません. .h ファイルにリストされている順序と関係があり、.cpp とまったく同じ順序に従っていなかったのではないかと思いましたが、すべてを同じ順序でリストしても何も変わりませんでした。

4

2 に答える 2

1

::メンバー関数を定義する前に、クラスの名前を入力する必要があります。

  IntSet::IntSet(int a, int b, int c, int d, int e) {
//^^^^^^^^
//here

他のコンストラクター、演算子、およびメソッドについても同じことを行います。

于 2013-10-12T18:58:01.133 に答える