Saya memiliki 2 kelas:
class base {
virtual void foo() {};
};
class derived : public base {
void foo() { base::foo(); }
};
Saya membuat kesalahan dan menulis base:foo();
bukan base::foo();
. Kode telah dikompilasi dan dijalankan, tetapi dipisahkan.
Saya tidak tahu bagaimana saya bisa Google dan tidak tahu apa itu, tapi saya sangat tertarik: apa maksudnya?
base:foo();
Jika itu penting:
class base : public QAbstractGraphicsShapeItem
warning: label 'base' defined but not used [-Wunused-label]
... mungkin kita perlu menambahkan ini halaman ajukan pertanyaan: Sudahkah Anda mencoba mengaktifkan peringatanJawaban:
void foo() { base:foo(); }
setara dengan:
void foo() { base: // An unused label. foo(); // Calls the function again, resulting in infinite recursion. }
Karena rekursi tak terbatas, fungsi tersebut menyebabkan luapan tumpukan.
sumber
foo()
di tumpukan panggilan. terima kasih-Wall
, saya mendapatkan pesan peringatan: socc.cc:3:4: peringatan: label 'base' ditentukan tetapi tidak digunakan [-Wunused-label] base: // Label yang tidak digunakan.