1.hpp文件
成都網(wǎng)站設(shè)計、做網(wǎng)站的關(guān)注點不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。hpp文件可以使用template函數(shù)和class靜態(tài)函數(shù)(不含靜態(tài)成員)
a)不可包含全局對象和全局函數(shù)
由于hpp本質(zhì)上是作為.h被調(diào)用者include,所以當hpp文件中存在全局對象或者全局函數(shù),而該hpp被多個
調(diào)用者include時,將在鏈接時導致符號重定義錯誤。要避免這種情況,需要去除全局對象,將全局函數(shù)封
裝為類的靜態(tài)方法。
b)類之間不可循環(huán)調(diào)用
在.h和.cpp的場景中,當兩個類或者多個類之間有循環(huán)調(diào)用關(guān)系時,只要預先在頭文件做被調(diào)用類的聲明
即可,如下:
class B;
class A{
public:
void someMethod(B b);
};
class B{
public:
void someMethod(A a);
};
在hpp場景中,由于定義與實現(xiàn)都已經(jīng)存在于一個文件,調(diào)用者必需明確知道被調(diào)用者的所有定義,而不能等到cpp
中去編譯。因此hpp中必須整理類之間調(diào)用關(guān)系,不可產(chǎn)生循環(huán)調(diào)用。同理,對于當兩個類A和B分別定義在各自的
hpp文件中,形如以下的循環(huán)調(diào)用也將導致編譯錯誤:
//a.hpp#include "b.hpp"class A{
public:
void someMethod(B b);
};
//b.hpp#include "a.hpp"class B{
public:
void someMethod(A a);
}
c)不可使用靜態(tài)成員
靜態(tài)成員的使用限制在于如果類含有靜態(tài)成員,則在hpp中必需加入靜態(tài)成員初始化代碼,當該hpp被多個文檔include時,將產(chǎn)生符號重定義錯誤。
2.
#ifndef MATH_HPP_
#define MATH_HPP_
//內(nèi)容
#endif
3.多個類互相包含使用指針,不要用成員。
網(wǎng)站標題:C++多目錄多文件編譯技巧-創(chuàng)新互聯(lián)
當前路徑:http://aaarwkj.com/article46/ichhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、商城網(wǎng)站、網(wǎng)站排名、App設(shè)計、網(wǎng)站建設(shè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容