-1

私は c++ hw の割り当てに取り組んでいるので、できるだけ多くのコードを投稿しないようにします。私たちが取り組んでいることは次のとおりです: public swap 関数を含むクラスがあります (insert および delete 関数などと一緒に)データを格納するためのプライベート構造体配列。

何かのようなもの:

Class set
public:
set(int dimension);
insert();
delete();
swap(set& swapset);
private:
struct *set;

swap(s2); s1.swap(s2); swap(s2); s1 と s2 は配列全体を交換し、各配列の次元を保持する必要があります (つまり、s1 が set=new set[3] で s2 が set=new set[5] の場合) s1 が [5] で s2 が交換された後は[3]

配列が固定次元の場合、挿入関数と削除関数を使用して配列を交換することができましたが、*set は非公開であるため、swap 関数中に配列の次元を変更する方法がわかりません。

すべての助けを前もってありがとう!

編集:正しく説明できないため、コードの一部を追加しました:

  set::set()
    :counter(0),m_size(0),flag(0)
    {
    m_set=new set[DEFAULT_MAX_ITEMS];
    swapper=new set[DEFAULT_MAX_ITEMS];
    maxsize=DEFAULT_MAX_ITEMS;
    }
    set::set(int x)
    :counter(0),m_size(0),flag(0)
    {
    m_set=new set[x];
    swapper=new set[x];
    maxsize=x;
    }

void set::swap(set& other)
        {

    // Exchange the contents of this set with the other one.
        int tempmaxsize=maxsize;
        int tempcounter=counter;
        int tempmsize=m_size;

        swapper=m_set;
        m_set=other.m_set;

        other.m_set=swapper;

        m_size=other.m_size;
        counter=other.counter;
        maxsize=other.maxsize;

        other.counter=tempcounter;
        other.m_size=tempmsize;
        other.maxsize=tempmaxsize;
        }

private:

    struct set
        {
        ItemType entry;
        int count;
        };
    int maxsize;
    set* m_set;
    int m_size;
    int counter;
    int flag;
    set* swapper;

エラー コードは次のとおりです: debug assertion failed! 式:_block_type_is_valid(phead->nblockuse)

4

1 に答える 1

0

実際の配列サイズの変更はswap関数の一部であるため、クラス メソッドで行う必要があります。クラス メソッドであるため、プライベート メンバーにアクセスできます。

于 2013-01-22T07:07:29.760 に答える