C++ クラスに (単純なはずの) 割り当てがあります。
課題は次のとおりです。 T * 配列と int サイズの 2 つのプライベート データ メンバーを含むクラス テンプレートを作成します。クラスは、コンストラクターを使用して、入力されたサイズに基づいて配列を割り当てます。ユーザーがサイズに基づいて配列を埋めることができるメンバー関数があります。さらに、配列をソートし、ソートされた要素を表示するメンバー関数があります。デストラクタを使用して配列を削除します。main( ) を開発して、メンバー関数を呼び出す 2 つのオブジェクトを作成します。その結果、最初のオブジェクトは double 型の配列を保持し、もう 1 つのオブジェクトは 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();
}