Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membetulkan Ralat \'Expected Constant Expression\' Apabila Mengisytiharkan Tatasusunan dalam C ?

Bagaimana untuk Membetulkan Ralat \'Expected Constant Expression\' Apabila Mengisytiharkan Tatasusunan dalam C ?

Linda Hamilton
Lepaskan: 2024-10-25 13:04:03
asal
698 orang telah melayarinya

How to Fix the

Menyelesaikan Ralat "Ungkapan Malar Jangkaan" untuk Saiz Tatasusunan

Pertimbangkan kod C berikut:

<code class="cpp">int count = 0;
float sum = 0;
float maximum = -1000000;

std::ifstream points;

int size = 100;
float x[size][2]; // <<< Error
Salin selepas log masuk

Ini kod menimbulkan ralat "ekspresi malar dijangka" apabila mengisytiharkan tatasusunan x. Ralat ini berlaku kerana C memerlukan saiz tatasusunan bukan statik untuk diketahui pada masa penyusunan.

Penyelesaian Menggunakan Vektor

Untuk menyelesaikan isu ini, kita boleh menggunakan vektor C bukannya tatasusunan:

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Salin selepas log masuk

Penyelesaian Menggunakan baharu

Pendekatan lain melibatkan memperuntukkan tatasusunan secara dinamik menggunakan operator baharu:

<code class="cpp">float (*px)[2] = new float[size][2];</code>
Salin selepas log masuk

Penyelesaian Alternatif

  • Gunakan Boost: Jika anda mempunyai akses kepada perpustakaan Boost, anda boleh menggunakan boost::array dan bukannya std::array.
  • Tentukan Jenis Tatasusunan Tersuai: Tentukan jenis tatasusunan tersuai yang menyokong saiz dinamik dan gunakannya dalam vektor.

Pertimbangan untuk Pengkompil Bukan C 11

Jika anda tidak mempunyai sokongan C 11, gunakan teknik berikut:

  • Gunakan templat identiti untuk memudahkan sintaks apabila menggunakan baharu.
  • Gunakan vektor std::pair sebagai alternatif kepada penyelesaian vektor yang dinyatakan sebelum ini.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Expected Constant Expression\' Apabila Mengisytiharkan Tatasusunan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan