使用 __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 中公开它。如果您不这样做,那么总有一天有人会很难诊断出链接器错误。
关于c++ - 如果在 DLL 项目中使用类中的重载运算符,它们是否需要 __declspec(dllexport)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436660/