Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum token '<'?

WBOY
Lepaskan: 2023-08-25 18:30:21
asal
3356 orang telah melayarinya

如何解决C++语法错误:'expected initializer before '<' token'?

Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum '<'?

Dalam pengaturcaraan C++, pelbagai ralat sering dihadapi. Salah satu ralat biasa ialah "pemula yang dijangkakan sebelum '<'". Ralat ini biasanya berlaku apabila menggunakan kelas templat atau fungsi templat, dan anda perlu memberi perhatian kepada beberapa butiran sintaks tertentu. Dalam artikel ini, kita akan membincangkan punca ralat ini dan cara membetulkannya.

Mula-mula, mari lihat contoh kod untuk memahami ralat ini dengan lebih baik:

template <typename T>
void PrintVector(vector<T> vec) {
    for (const auto& elem : vec) {
        cout << elem << " ";
    }
    cout << endl;
}

int main() {
    vector<int> myVector = {1, 2, 3, 4, 5};
    PrintVector<int>(myVector);
    return 0;
}
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami telah menentukan fungsi templat PrintVector yang menerima objek vektor dan mencetak elemennya. Dalam fungsi utama, kami mencipta objek vektor yang mengandungi integer dan menghantarnya ke fungsi PrintVector. Walau bagaimanapun, apabila kami cuba menyusun kod ini, kami mendapat mesej ralat berikut: "pemula dijangka sebelum '<'".

Sebab ralat ini berlaku adalah kerana pengkompil tidak mengenali simbol "<". Ini kerana pengkompil C++ secara lalai mentafsir "<" sebagai pengendali perbandingan dan bukan sebagai sebahagian daripada senarai parameter templat. Oleh itu, kami memerlukan cara untuk memberitahu pengkompil bahawa "<" adalah sebahagian daripada senarai parameter templat.

Sangat mudah untuk menyelesaikan ralat ini Kami hanya perlu menambah kata kunci "template" sebelum simbol "<" selepas fungsi templat. Kod yang diubah suai adalah seperti berikut:

template <typename T>
void PrintVector(vector<T> vec) {
    for (const auto& elem : vec) {
        cout << elem << " ";
    }
    cout << endl;
}

int main() {
    vector<int> myVector = {1, 2, 3, 4, 5};
    PrintVector<int>(myVector);
    return 0;
}
Salin selepas log masuk
Salin selepas log masuk

Kini, kami telah menambah kata kunci "template" untuk memberitahu pengkompil bahawa "<" ialah sebahagian daripada senarai parameter templat. Ini membolehkan pengkompil mengenal pasti jenis templat dengan betul dalam kod anda.

Selepas membetulkan ralat, susun semula kod dan anda akan mendapat output yang kami jangkakan. Ini adalah cara untuk menyelesaikan ralat sintaks C++ "pemula yang dijangkakan sebelum '<'".

Untuk meringkaskan, apabila anda menemui mesej ralat "pemula dijangka sebelum '<'" dalam pengaturcaraan C++, ia mungkin disebabkan oleh jenis templat yang tidak dinyatakan dengan betul. Ralat ini boleh diselesaikan dengan menambahkan kata kunci "templat" sebelum fungsi templat atau kelas templat dan memastikan bahawa simbol "<" ditafsirkan dengan betul sebagai sebahagian daripada senarai parameter templat. Saya harap artikel ini dapat membantu pembaca menyelesaikan ralat sintaks C++ yang biasa.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat sintaks C++: 'pemula dijangka sebelum token '<'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan