2
Veccreator関数でフロート配列を初期化すると、コンパイラが実行時エラーを発生します。私は私のコードがどのように見えるかのサンプルを投稿しています。フロート配列を{0}で初期化できません
#include<iostream>
using namespace std;
#define SIZE 1000
class Vector
{
private:
float vecarray[SIZE];
public:
void VecCreator(int dimension)
{
vecarray[SIZE]= { 0 };
cout << "Enter " << dimension << " digits" << endl;
for (int i = 0; i < dimension; i++)
{
cin >> vecarray[i];
}
}
};
int main(void) {
Vector obh;
obh.VecCreator(2);
}
しかし、それはこれで正常に動作します:最初のコードがエラーを与えている理由を教えてください `
#include<iostream>
using namespace std;
#define SIZE 1000
class Vector
{
private:
float vecarray[SIZE]= {0};
public:
void VecCreator(int dimension)
{
cout << "Enter " << dimension << " digits" << endl;
for (int i = 0; i < dimension; i++)
{
cin >> vecarray[i];
}
}
};
int main(void) {
Vector obh;
obh.VecCreator(2);
}
。ここでは第二の答えで
*コンストラクタの初期化子リスト*を検索して読み込みます。 –
人々があなたの質問に答えるのを手助けするためには、エラーについてより具体的に説明する必要があります。あなたの[mcve]から得た正確なエラーを組み込むためにあなたの投稿を編集してください(できれば、コピー+貼り付けを使用して転写エラーを避ける)。 –
これはバッファオーバーランです。 Cでは、配列インデックスはゼロベースです。 'vecarray [SIZE] = 0'という式は、配列の最後のインデックス(SIZE-1)を超えた値を割り当てます。 –