使用内联函数时,出现“无法解析的外部符号问题”

blurrCat 2009-07-24 11:22:48
很简单,我写了一个向量类,比如要重载运算符+,
inline Vector Vector::operator +(Vector u)
{
return Vector(x + u.x, y + u.y, z + u.z);
}
对象做加法的时候就会出现无法解析的外部符号问题:
比如
Vector m,v;
m = m + v;


main.obj : error LNK2001: unresolved external symbol "public: class Vector __thiscall Vector::operator+(class Vector)" (??HVector@@QAE?AV0@V0@@Z)

如果把inline去掉就对了。为什么?怎么解决?
...全文
308 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dskit 2009-07-25
  • 打赏
  • 举报
回复
Vector& Vector::operator +(Vector& u)
{
x += u.x;
y += u.y;
y += u.z;


return *this;
}

//最好这样
Vector Vector::operator+(Vector& lhs, Vector& rhs)
{
return Vector(lhs.x + rhs.x, lhs.y + lh.y, lhs.z + lhs.z);
}
blurrCat 2009-07-24
  • 打赏
  • 举报
回复
明白了 谢谢
pengzhixi 2009-07-24
  • 打赏
  • 举报
回复
是的,否则没办法找到定义
blurrCat 2009-07-24
  • 打赏
  • 举报
回复
哦 懂了 谢谢

是所有的内联函数都必须将函数体写在声明文件中吗?
mstlq 2009-07-24
  • 打赏
  • 举报
回复
请在声明函数的时候使用……
不是定义函数的时候哦^_^
pengzhixi 2009-07-24
  • 打赏
  • 举报
回复
声明后在接着在类后面定义那个函数
  • 打赏
  • 举报
回复
inline Vector Vector::operator +(Vector u)
{
return Vector(x + u.x, y + u.y, z + u.z);
}
得写到Vector的声明文件中
blurrCat 2009-07-24
  • 打赏
  • 举报
回复
你的意思是在声明时前面加inline,实现时不写?
试了,问题仍然存在
信念 2009-07-24
  • 打赏
  • 举报
回复
inline只能写在声明里

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧