多文件编译问题!

oldjackyone 2004-02-03 12:33:38
default.cpp文件内容:
#include "Str.h"
void main()
{
String a;
}

Str.h文件内容:
#include <iostream>
using namespace std;
class String;

class String
{
public:
String();

private:
int _size;
char *_string;
};


Str.cpp文件内容:
#include "Str.h"

inline String::String()
{
_size = 0;
_string = 0;
}


为何不能正确编译,如果把成员函数的定义放到类内部,那就可行,为什么?

各位可以给我一个解释吗?
...全文
27 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
viking2001 2004-02-03
  • 打赏
  • 举报
回复
C++的规定吧
sharkhuang 2004-02-03
  • 打赏
  • 举报
回复
为什么必须在同一文件里面呢?
hifrog 2004-02-03
  • 打赏
  • 举报
回复
修改后Str.cpp文件内容:
#include "Str.h"

String::String()
{
_size = 0;
_string = 0;
}

这样可以编译通过。
hifrog 2004-02-03
  • 打赏
  • 举报
回复
inline的函数定义和声明应该在同一文件里,把inline去掉即可。
oldjackyone 2004-02-03
  • 打赏
  • 举报
回复
补允:编译环境:VC++。
C723 2004-02-03
  • 打赏
  • 举报
回复
同意hifrog(seafrog)
sevencat 2004-02-03
  • 打赏
  • 举报
回复
inline String::String()
{
_size = 0;
_string = 0;
}
这里面的这个inline放到声明里面可能就可以。

64,682

社区成员

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

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