使用__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中公开它。如果您不这样做,那么某天将很难诊断链接器错误。

10-07 23:08