[英]Do overloaded operators within classes require __declspec(dllexport) if they're used in a DLL project?
使用__declspec(dllexport)
,是否應該為重載的運算符也分配此導出標志? 例如,假設您有以下內容:
/*
Overloaded operator (equivalent operator) returns true if x equals compared vector
*/
__declspec(dllexport) bool operator ==(const vector &v)
{
return (x == v.x && y==v.y && z==v.z);
}
為了在您的類類型上使用==
,是否需要__declspec(dllexport)
? 還是不應該將其導出,因為它特定於該類和任何繼承的類?
通常,您將__declspec(dllexport)應用到類聲明中,以便整個shebang都被導出。 還導出v表,如果類具有虛擬成員,則該表很重要。 一次只做一個成員是一件很累又麻煩的事情。
不知道為什么您會跳過超載。 如果您在類中將其公開,那么您當然也應該從DLL中公開它。 如果您不這樣做,那么某天將很難診斷鏈接器錯誤。
通常將內聯這樣的函數。 我無法想象為什么您要強制執行跨模塊(間接和修復)函數調用。
但是我建議不要導出類,因為它會在兩個DLL之間建立緊密的耦合,這在以后確實是令人頭疼的維護問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.