簡體   English   中英

如果類中的重載運算符用於DLL項目,是否需要__declspec(dllexport)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM