Fungsi Ahli Sebaris C dalam Fail .cpp: Dilema dan Penyelesaian
Dalam C , fungsi ahli sebaris biasanya diisytiharkan dalam fail pengepala untuk sebab kecekapan. Walau bagaimanapun, senario tertentu mungkin memerlukan pelaksanaan fungsi dalam fail .cpp. Mari kita mendalami situasi sedemikian:
Pertimbangkan senario berikut dengan kebergantungan bulat:
A.h
<code class="cpp">#pragma once #include "B.h" class A { B b; };</code>
B.h
<code class="cpp">#pragma once class A; class B { inline A getA(); };</code>
Untuk memecahkan pergantungan pekeliling, pelaksanaan getA perlu diletakkan dalam B.cpp:
B.cpp
<code class="cpp">#include "B.h" #include "A.h" inline A B::getA() { return A(); }</code>
Dilema
Adakah peletakan kata kunci sebaris dalam kedua-dua pengepala dan fail .cpp menjejaskan sebarisan fungsi?
Resolusi
Malangnya, walaupun kata kunci sebaris dalam fail .cpp, pengkompil tidak akan sebaris getA melainkan ia digunakan dalam B.cpp itu sendiri. Ini kerana pengkompil memerlukan definisi fungsi sebaris apabila ia ditemui. Biasanya, meletakkan fungsi dalam fail pengepala memastikan ketersediaan ini.
Amalan Terbaik
Mengikut Soalan Lazim C, adalah penting untuk menentukan fungsi sebaris dalam fail pengepala. Meletakkannya dalam fail .cpp boleh membawa kepada ralat luaran yang tidak dapat diselesaikan.
Penyelesaian Alternatif
Senario yang disediakan tidak mencadangkan penyelesaian alternatif untuk meletakkan fungsi sebaris dalam . fail cpp.
Atas ialah kandungan terperinci Bolehkah Fungsi Ahli Sebaris Ditakrifkan dalam Fail .cpp dan Masih Sebaris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!