[英]C++, callbacks, objects and best practice
我正在尋找解決我的問題的方法。 我找到了解決方法,但我認為應該有一種更漂亮的方法。 這是我的問題:我有一個用C編寫的IPC庫。收到消息后,它將調用回調函數。 我在這個庫上做了一個包裝器類。 收到消息后,包裝器類應觸發一個信號(我使用的是Qt yes)。 如您所知,成員函數不能是回調,因此在我的情況下,我在類外部編寫了該回調。 現在我必須從回調函數中發出信號,我知道的唯一方法是為包裝器類創建一個公共方法,該方法將發出信號,但是我不想將該方法公開,因此我不能訪問課外的受保護/私人成員。 有人有類似的問題嗎? 您是如何解決的?
謝謝
如果希望成員函數為“回調”,則可以在類中將該函數聲明為“靜態”。
好吧,成員函數可以是回調,還有一些其他工作。 這就是所謂的“委托”。 您可以嘗試boost::bind
/ boost::mem_fn
。 也許其他一些庫會更方便/有用,例如boost.lambda (我沒有嘗試過)。
std :: mem_fun與Vlad指出的技巧相同。 交朋友被認為不是一個好的設計,因為您公開了所有類的內部組件,甚至都沒有給成員打電話就可以訪問。
靜態方法將無法發出單數,但是它可以訪問指向您的類的另一個靜態成員。 您可以通過這種方式創建一個特殊的“調用程序”類,並存儲指向您的Qt對象的單個靜態指針。
您可以有一個全局類指針,但是它比擁有一個朋友還要糟糕。 您可以使類成為單例,但它的權衡取舍類似於全局變量,因此不值得一用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.