提问人:Luca 提问时间:3/16/2017 更新时间:3/16/2017 访问量:279
重载运算符时无法解析的外部
unresolved external when overloading an operator
问:
我有一个简单的 C++ 类,如下所示:
class __declspec(dllexport) PrefData
{
public:
PrefData();
int m_data_member;
};
std::ostream& operator<<(std::ostream& os, const PrefData& obj);
这会导致未解析的外部错误和未解析的外部符号。现在,我尝试将其作为类成员:class std::basic_ostream > & __cdecl cop4530::operator<<
class __declspec(dllexport) PrefData
{
public:
PrefData();
int m_data_member;
friend std::ostream& operator<<(std::ostream& os, const PrefData& obj);
};
这也导致了同样的错误。但是,当我将其导出为:
class __declspec(dllexport) PrefData
{
public:
PrefData();
int m_data_member;
};
__declspec(dllexport) std::ostream& operator<<(std::ostream& os, const PrefData& obj);
这链接很好。我不确定为什么当它是类成员函数时它没有链接,因为它被应用于整个类?其次,导出这个运算符是个坏主意吗?我在某处读到这可能不是一件好事,但我无法弄清楚细节。dllexport
答: 暂无答案
评论
PrefData