Tidak Dapat Mengikat Rujukan Nilai Bukan Kons kepada Rvalue: A Resolue
Coretan kod yang diberikan mengalami ralat semasa memulakan objek kelas Foo dalam pembina Bar kelas. Mesej ralat menunjukkan bahawa rujukan bukan const lvalue (Foo f) sedang terikat pada rvalue (hasil panggilan genValue()).
Dalam C , parameter rujukan bukan const hanya boleh merujuk kepada yang dinamakan pembolehubah (lvalues). Walau bagaimanapun, hasil genValue() ialah nilai sementara (rvalue). Untuk menyelesaikan isu ini, kita perlu menghantar nilai genValue() dengan nilai (int).
<code class="cpp">class Foo { public: Foo(int x) { this->x = x; } private: int x; }; class Bar { public: Bar(): f(genValue()) { } private: Foo f; int genValue() { int x; // do something ... x = 1; return x; } };</code>
Dengan menukar hujah pembina kepada int, kita kini boleh memulakan objek Foo dalam skop pembina tanpa sebarang kesilapan.
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mengikat Rujukan Nilai Bukan Kons kepada Nilai R dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!