我正在研究C++中的API,並試圖/真的/很難不使用RTTI(運行時類型信息)來實現一些依賴注入功能。編譯器模板實現是否引入循環依賴?
我相信我能做到這一點,但通過利用模板 - 但它讓我疑惑:
當模板「擴大」和由編譯器實現,做他們實際上引入循環依賴,(編譯時間還是運行時間),模板類在框架庫中實現,並且該類的客戶端位於上層分層庫中?
感謝您的幫助!
#include <string>
/************************************************************/
// Implemented in Framework.lib
namespace Framework
{
template<typename ShapeTemplateType>
class Utility
{
void Do()
{
ShapeTemplateType x;
(void) x;
}
};
} // End namespace Framework
/************************************************************/
// Implemented in Application.lib
namespace Application
{
class StateObject
{
int i;
};
class Facade
{
Framework::Utility<StateObject> state;
};
} // End Namespace Application
/********************************************************************/
// Implemented in Client
int main(int args, char* argv[])
{
Application::Facade facade;
//Derived d;
return 0;
}
看起來好像不是這樣。你有什麼錯誤嗎? – imreal
這段代碼應該做什麼? – Pubby
你的模板是什麼意思是「在Framework.lib中實現的」? '模板'往往是(禁止一些花哨的舞蹈)是一個純粹的頭文件構造。它們以什麼方式在特定的lib中「實現」? – Yakk