我在我的C++類中有一個(應該是簡單的)任務。模板T類數組
以下是作業: 創建一個包含兩個私有數據成員的類模板:T * array和int size。該類使用構造函數根據輸入的大小分配數組。有成員函數允許用戶根據大小填充數組。另外,還有一個成員函數可以對數組進行排序並顯示排序的元素。使用析構函數刪除數組。開發main()來創建兩個對象來調用成員函數。結果,第一個對象將保存它的double類型的數組,而另一個將保存它的int類型的數組。
這裏是我想出了,但想出的「不完全型‘T’的分配」的錯誤:
#include <iostream>
#include <new>
#include <vector>
using namespace std;
template <class T>
class DynArray {
protected:
int size;
T ** DynamicArray = new T[size];
public:
DynArray(){
void CreateArray(){
cout << "Enter size of Array: ";
cin >> size;
for (int i = 0; i < size; ++i){
DynamicArray[i] = new T();
}
for (int i = 0; i<size; i++) {
cout << "Element " << i << ": ";
cin >> DynamicArray[i];}
}
//Sort Array
void Sort(T a[], int size)
{
int idx, pass;
for (pass=0; pass<size; ++pass){
for (idx=0; idx<size-1; ++idx){
if (a[idx] > a[idx+1])
swap(a[idx], a[idx+1]);}
}
for (int i=0; i<size; ++i) {
for (idx = 0; idx<size-1; ++idx) {
cout << a[idx] << " ";
}
}
}
void DeleteArray(){
for (int i = 0; i < size; ++i){
delete DynamicArray[i];
}
delete[] DynamicArray;
}
};
int main() {
DynArray<class T>();
return 0;
}
不知道如果我在我的思路或完整滯後如果我只是缺少一個小元素。任何幫助都很棒。
謝謝@ jblixr和@ user3655463的幫助。在你的提示和幫助之後,我想到了它。 下面是我想出來供參考,如果有其他人正在處理這個問題。
#include <iostream>
#include <new>
#include <algorithm>
using namespace std;
//Template Class T
template <class T>
class DynArray {
protected:
int size;
T * DynamicArray;
public:
DynArray(){};
DynArray(size_t s): size(s) {
DynamicArray = new T[size];
for (int i = 0; i<size; i++) {
cout << "Element " << i << ": ";
cin >> DynamicArray[i];
}
}
//Sort Array
void Sort(){
sort(DynamicArray, DynamicArray+size);
for (int i=0; i<size; i++) {
cout << DynamicArray[i] << endl;
}
}
//Clear Heap
~DynArray() {
delete []DynamicArray;
}
};
int main() {
int sizeOfArry;
cout << "Enter size of Array: ";
cin >> sizeOfArry;
//Use as an int Array;
DynArray<int> intArray = DynArray<int>(sizeOfArry);
intArray.Sort();
}