Bagaimana untuk menyelesaikan ralat kompilasi C++: 'tiada padanan untuk 'operator<<''?

WBOY
Lepaskan: 2023-08-26 23:27:12
asal
2490 orang telah melayarinya

解决C++编译错误:'no match for 'operator<<'',如何解决?

Selesaikan ralat kompilasi C++: 'tiada padanan untuk 'operator<<'', bagaimana untuk menyelesaikannya?

Dalam pengaturcaraan C++, kita sering menghadapi pelbagai mesej ralat. Satu ralat biasa ialah ralat penyusunan apabila menggunakan operator sisipan aliran output (<<) Mesej ralat ialah 'tiada padanan untuk 'operator<<''. Ralat ini biasanya berlaku apabila kita cuba memasukkan objek ke dalam aliran keluaran.

Sebab bagi ralat ini ialah pengkompil tidak dapat mencari fungsi beban lampau yang sesuai bagi pengendali pemasukan aliran keluaran untuk mengendalikan jenis objek tertentu. Ini biasanya kerana kita terlupa untuk mentakrifkan fungsi terlampau beban untuk operator pemasukan aliran output untuk jenis objek tersebut atau terdapat beberapa ralat sintaks dalam kod.

Untuk menyelesaikan ralat kompilasi ini, kita perlu menentukan operator pemasukan aliran keluaran yang sesuai untuk jenis objek ini dengan melebihkan operator. Mari kita ilustrasikan dengan contoh kod berikut.

#include <iostream>

class MyClass {
private:
    int value;
public:
    MyClass(int v) : value(v) {}

    // 重载输出流插入运算符
    friend std::ostream& operator<<(std::ostream& os, const MyClass& obj);
};

std::ostream& operator<<(std::ostream& os, const MyClass& obj) {
    os << "MyClass: " << obj.value;
    return os;
}

int main() {
    MyClass obj(42);
    std::cout << obj << std::endl;
    return 0;
}
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan kelas yang dipanggil MyClass, yang mengandungi nilai pembolehubah ahli persendirian. Kemudian, selepas definisi kelas, kami mentakrifkan fungsi terlampau beban bagi pengendali sisipan aliran output, membolehkannya memasukkan objek MyClass ke dalam aliran output. Dalam fungsi ini, kami hanya memasukkan nilai pembolehubah ahli kelas ke dalam aliran keluaran dan mengembalikan aliran keluaran itu sendiri.

Dalam fungsi utama, kami mencipta objek MyClass obj dan memasukkannya ke dalam aliran keluaran standard std::cout menggunakan operator pemasukan aliran keluaran dan menambah aksara baris baharu pada penghujungnya.

Dengan cara ini, kami mentakrifkan fungsi terlampau beban operator pemasukan aliran keluaran untuk objek MyClass, supaya pengkompil boleh mengendalikan operasi pemasukan objek dengan betul dan berjaya mengeluarkan hasilnya.

Untuk meringkaskan, apabila kita menghadapi ralat kompilasi 'tiada padanan untuk 'operator<<' dalam pengaturcaraan C++, ini bermakna pengkompil tidak dapat mencari fungsi terlampau beban yang sesuai bagi operator pemasukan aliran keluaran. Untuk menyelesaikan ralat ini, kita perlu menentukan fungsi beban operator yang sesuai untuk jenis objek tersebut. Dengan membebankan pengendali, kami boleh memberitahu pengkompil cara mengendalikan penyisipan objek jenis tertentu.

Saya harap melalui penjelasan dan contoh kod artikel ini, anda boleh lebih memahami dan menyelesaikan ralat kompilasi biasa ini, dan menjadi lebih selesa dalam pengaturcaraan C++.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat kompilasi C++: 'tiada padanan untuk 'operator<<''?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!