//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来表示这一点。即使物理数组在调用方法时处于容量(即元素数等于物理大小),此方法也应该能够向集合中添加新元素。
答案 0 :(得分:0)
Set::Set(int)
的声明及其实施不正确。
您不能在定义中使用默认参数值。他们需要在声明中。
class Set
{
...
Set(int SIZE = DEFAULT_SIZE); // Default Constructor
和
Set::Set(int SIZE)
{
pSize = SIZE;
set = new int[pSize];
}
Set myInstance[];
语法不正确。如果要创建单个实例,请使用:
Set myInstance;
如果要创建包含10个实例的数组,请使用:
Set myInstanceArray[10];