c++ - 如果在 DLL 项目中使用类中的重载运算符,它们是否需要 __declspec(dllexport)?

标签 c++ dll operator-overloading declspec

使用 __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/

相关文章:

c++ - auto的赋值可以不是r值表达式的结果吗?

c++ - 检查迭代器位于哪个对象中

C++ 编写一个适当的类似函数的宏

c++ - QDateTime 与 sqlite3

c++ - 如何将对非托管 dll 的访问限制为仅特定的第 3 方(拒绝所有其他人的访问)?

在 C++/CLI 中使用时未创建 C# 应用程序 log4net 日志文件

带有运算符重载函数的 c++17 求值顺序

c - 如何从C中的dll获取模拟器(.exe)路径

c++ - 运算符的简单重载 = 不起作用

c++ - 在 C++ 中使用友元函数进行 I/O 运算符重载