演習課題を行う過程で、配列データを渡しソートして返すという処理を行うことになりました。
しかし、メンバの配列が要素数1になってしまいます。
以下にコンストラクタを利用してメンバに配列変数を確保するサンプルを作ってみました。
メンバ変数の方の配列の要素数が1になります。
関数側でも配列を確保したいのですが、どのように正せばいいのでしょうか。
C++
1//main.cpp 2#include<iostream> 3using namespace std; 4#define arraySizeof(array) sizeof(array)/sizeof(array[0]) 5 6class TestArray { 7public: 8 int *data; 9 TestArray(int n) { data = new int[n]; } 10 ~TestArray() { delete(data); } 11}; 12 13int main() { 14 int a[256]; 15 cout << "Array Size = " << arraySizeof(a) << endl; 16 17 TestArray instance(100); 18 cout << "Array Size = " << arraySizeof(instance.data) << endl; 19 20 getchar(); 21 return 0; 22}
試したこと
このサンプルの形を取る前は、関数メンバに引数で「ソート対象の配列ポインタ」を直接渡すように設計していました。
void sort(int* data)
のように配列データを直接渡す方法です。
このときも関数側では要素数が1になり、しかしmain()内に戻ってくると要素数は宣言した数通りに戻っています。
関数内と呼び出し元main()内で、ポインターをcoutで表示させてみましたが、一致してしまいました。
nullptrや他の値にはなっていません。
先生の指摘により、メンバとコンストラクタを利用した形に書き換えてみましたが、状況は変わりませんでした。
補足情報
VS2015 , C++ , win32コンソールアプリ
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/18 12:14
2019/04/18 13:13