如何实例化几个set对象来测试我的Set类的各种构造函数和方法?

时间:2018-02-28 04:24:45

标签: c++

//Header File
#ifndef SET_H
#define SET_H

class Set
{
    private:
        int * set;
        int pSize;
        int numElements;
        static const int DEFAULT_SIZE=5;
    public:
        Set(int);
        Set(int [], int);
        Set(const Set&);
        ~Set();
        void setSet();
        void display();
};
#endif

// Member Implementation File
#include <iostream>
#include "Set.h"
using namespace std;

Set::Set(int SIZE = DEFAULT_SIZE) // Default Constructor
{
    pSize = SIZE;
    set = new int[pSize];
}
Set::Set(int arr[], int pSize)  // Set Constructor
{
    this->pSize = pSize;
    set = new int [this->pSize];
    for(int i =0; i < pSize; i++)
    {
        set[i] = arr[i];
    }
}
Set::Set(const Set &obj)   // Copy Constructor 
{
    pSize = obj.pSize;
    set = new int[obj.pSize];
    for(int i =0; i < pSize; i++)
    {
        set[i] = obj.set[i];
    }
}
Set::~Set()
{
    if(set != NULL)
        delete []set;
    set = NULL;
}
void Set::setSet()
{
    cout << "Please enter a set of integers" << endl;
    cin>> numElements;
    while(numElements> pSize)
    {
        int *arr = new int[pSize + DEFAULT_SIZE];
        for(int i = 0 ; i < pSize; i++)
        {
            arr[i] = set[i];
        }
        delete []set;
        set = arr;
        pSize = pSize + DEFAULT_SIZE;
    }
    for(int i =0; i < numElements; i++)
    {
        cout << "Please enter a number" << endl;
        cin >> set[i];
    }
}
void Set::display()
{
    cout << "{";
    for(int i =0 ; i < numElements; i++)
    {
        if (i == numElements - 1)
            cout << set[i];
        else
            cout << set[i]<< ", ";
    }
    cout << "}" << endl;
}

//Main.cpp file
#include <iostream>
#include "set.h"
#include <cstdlib>

using namespace std;

int main()
{

    Set myInstance[];
    myInstance.display();



    return 0;
}

如何从成员实现文件到主文件创建不同的数组实例?如何使用类,对象和调用数组专门格式化代码行?我的语句需要在文件中使用另一个for循环吗?请告诉我。

此外,我还需要一个方法来向现有集添加新元素并相应地返回{true,false}。通过定义,集合的元素不能是 因此,这种方法必须首先确保元素存在 添加不是该集合的元素。如果元素不能 补充一下,该方法应该返回false来表示这一点。即使物理数组在调用方法时处于容量(即元素数等于物理大小),此方法也应该能够向集合中添加新元素。

1 个答案:

答案 0 :(得分:0)

问题1

Set::Set(int)的声明及其实施不正确。

您不能在定义中使用默认参数值。他们需要在声明中。

class Set
{
   ...
        Set(int SIZE = DEFAULT_SIZE); // Default Constructor

Set::Set(int SIZE) 
{
    pSize = SIZE;
    set = new int[pSize];
}

问题2

Set myInstance[];

语法不正确。如果要创建单个实例,请使用:

Set myInstance;

如果要创建包含10个实例的数组,请使用:

Set myInstanceArray[10];