<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ##沒有躲過的坑--頭文件相互包含(Compiler error C2653: not a class or namespace name) 最近被自己坑兒了一把,改別人的代碼,最后編譯器這樣報錯的: **error C2653: not a class or namespace name** 簡單描述一下:? 有一個類A,聲明和實現分別位于 a.h和a.cc中? 有一個類B,聲明和實現分別位于 b.h和b.cc中? 類A的某個成員函數需要B類類型作為參數? 類B的某個成員函數需要A類類型作為參數 a.h文件如下: ~~~ #ifndef A_H_ #define A_H_ #include "b.h" class A { public: enum State { RIGHT = 0; ERROR = 1; } void send (B b); ... }; #endif ~~~ a.cc文件省略,無影響 b.h文件是這樣的: ~~~ #ifndef B_H_ #define B_H_ #include "a.h" class B { public: void send (A::State state); ... }; ~~~ 此時呢,編譯器就會報錯:? error C2653: A not a class or namespace name 這時候我們的第一反應往往是查看b.h中是否包含了A類所在的頭文件,即是否包含了a.h文件。 但是坑爹的是,我們明明包含了呀,怎么還會報錯呢? 好吧,就是相互包含的事兒,編譯器已經蒙掉了。? 簡而言之就是不要包含不必要的頭文件。 偶對了 差點忘告訴怎么修改了? 首先,我們是把類A和B放在了一個命名空間中,即對A和B都進行了 namespace KENG{ }封裝。 所以這個時候,我們可以在A中不包含B的頭文件,而改成前置聲明、、、、、 ~~~ #ifndef A_H_ #define A_H_ class B; class A { public: enum State { RIGHT = 0; ERROR = 1; } void send (B b); ... }; #endif ~~~ 大功告成!? 我們用#ifndef躲過了重復包含頭文件的坑兒,但是我們也不能肆無忌憚的包含,更要避免相互包含的情況!!!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看