在一個線程池實現:Cpp文件包括雖然也能夠在其中調試
有一個threadpool.h它有一個虛擬類threadpool。
class ThreadPool {
funcX(){} = 0
...
}
// ThreadPoolImpl not defined or declared in this file.
在相應的threadpool.cpp中,有從threadpool繼承的實現threadpoolImpl。
//include threadpool.h header.
class ThreadPoolImpl : public ThreadPool {
funcX() {....}; // The function I want to debug inside.
}
我的問題:
在我的主要功能: 如果我只包括threadpool.h,然後「的缺乏threadpoolImpl定義的原因,我得到
incomplete type not allowed error.
如果我有threadpool.cpp而不是threadpool.h,我得到鏈接錯誤,因爲threadpool.cpp編譯了兩次。爲了解決這個問題,我從我的項目中刪除了threadpool.cpp。 但是,這樣,我無法用斷點調試threadpool.cpp。
請有人告訴我是否可以使用threadpoolImpl,同時還可以在其中進行調試(使用VS IDE工具),還是我必須重寫它?
我將ThreadPoolImpl移至threadPool.h,而不是創建新的ThreadPoolImpl.h文件。但是threadPoolImpl類在threadPool.cpp中找不到它的函數實現。奇怪的。 哎呀,我已經從項目中刪除了ThreadPool.cpp,對不起〜 –
你是否爲funcX()添加了ThreadPoolImpl :: befor? @RobertBean –
我一直在閱讀的代碼應該是未完成的代碼,其代碼複製到別處(可能來自多個文件)。我正在抓一個例子來學習池東西.. 但我修改它(移動threadpoolimpl到它自己的文件),如你所說。現在它像我希望的那樣工作。 謝謝。 –