我的代碼旨在管理聯網客戶端和服務器上的操作,因爲兩者之間存在重大的重疊。但是,這裏和那裏有一些功能是專門由客戶端或服務器調用的,並且在服務器上意外地調用客戶端功能(反之亦然)是錯誤的重要來源。如何將代碼自動添加到C++中的衍生函數中
爲了減少這些類型的編程錯誤,我試圖給函數添加標籤,以便在錯誤使用時會引發騷動。我目前的解決方案是在每個函數的開始處有一個簡單的宏,如果客戶端或服務器訪問它們不應該訪問的成員,則調用assert。然而,當有多個派生實例的類時,這會遇到問題,因爲我必須在每個子類中將實現標記爲客戶端或服務器端。
我想要做的就是在基類中的虛擬成員簽名中放置一個標籤,這樣我只需標記一次即可,而不會因爲忘記重複執行而出現錯誤。我曾考慮在基類實現中進行檢查,然後用base :: functionName之類的方式來引用它,但只要需要手動將函數調用添加到每個實現中,就會遇到同樣的問題。理想情況下,我可以像默認構造函數一樣自動調用父級版本。
有人知道如何在C++中實現這樣的東西嗎?我應該考慮另一種方法嗎?
謝謝!
聽起來像你應該有不同的代碼和/或類爲服務器/客戶端 – Falmarri 2011-01-05 01:04:09
爲什麼不把通用代碼分解成基類,並從它們派生一個服務器類和客戶端類? – Puppy 2011-01-05 01:12:09