注册 登录
编程论坛 C++教室

类代码文件的组织,到底改怎么安排,

未未来 发布于 2013-08-22 19:48, 809 次点击
比如说有头文件,里面放的是类的定义,以及 一个成员函数的声明:
1.ceshi.hpp
程序代码:
#include<iostream>
using namespace std;
class  ceshi {
    public:
    ceshi(int x):ce(x){    }
  void out();   
    private:
    int ce;
   
};

成员还是ceshi的实现放在另外一个cpp中
2.ceshi.cpp
程序代码:
#include<iostream>
#include"ceshi.hpp"
using namespace std;
void ceshi::out(){
    cout<<ce;
}

最后是主程序
3.main.cpp
程序代码:
#include<iostream>
#include"ceshi.hpp"
using namespace std;
int main(){
    ceshi ll(5);
    ll.out();
    return 0;
}

根据书上的说法我觉得是这样安排的,但是无法编译成功。


还有一种是在头文件这样修改
修改后:
程序代码:
#include<iostream>
using namespace std;
class  ceshi {
    public:
    ceshi(int x):ce(x){    }
  void out();   
    private:
    int ce;
   
};
#include"ceshi.cpp"

在最后加上成员函数定义的源文件。
另外成员函数定义的文件里不再包括头文件
这样运行是正确的。
但是感觉跟书上讲的不一样。
求前辈解答,我看是的是C++primer
14 回复
#2
peach54602013-08-22 20:13
完全不懂你在讲什么
#3
peach54602013-08-22 20:14
哦,你去看一下#include宏是干嘛的...
百度,谷歌了再说...
#4
未未来2013-08-22 20:17
回复 2楼 peach5460
你理解能力有问题!就是类中成员函数的声明在头文件hpp里,它的定义在cpp文件里,应该怎么连接起来,
#5
holy__shit2013-08-23 01:47
回复 4楼 未未来
看下错误!

[ 本帖最后由 holy__shit 于 2013-8-23 10:14 编辑 ]
#6
peach54602013-08-23 06:18
回复 4楼 未未来
那你是怎么没有把他连起来的呢?
#7
未未来2013-08-23 19:55
回复 5楼 holy__shit
--------------------Configuration: manin - Win32 Debug--------------------
Linking...
manin.obj : error LNK2001: unresolved external symbol "public: void __thiscall ceshi::out(void)" (?out@ceshi@@QAEXXZ)
Debug/manin.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

manin.exe - 1 error(s), 0 warning(s)
#8
peach54602013-08-23 22:35
工程设置有问题呗
#9
未未来2013-08-23 23:11
回复 8楼 peach5460
我也意识到了,可是我这苦逼的vc6.0对win7支持不好,将文件加到工程里去就崩溃,我都要崩溃了,您用的啥编译的, vs多少 ,
#10
love云彩2013-08-23 23:44
1,你的头文件包含格式是正确的。
2,用vs2012来调试吧,若不能通过,请贴上错误提示。
#11
未未来2013-08-24 02:07
回复 10楼 love云彩
唉,是没错,
把这几个文件放在一个项目里编译就可以了,只怪我先前用的编译器与win7 兼容不好,没法添加文件到项目,现在在学习使用codeblocks,
#12
peach54602013-08-24 19:27
你终于肯换掉那个很奇葩的C-free了呀
#13
TonyDeng2013-08-24 19:29
不会用命令行就赖编译器不得力
#14
peach54602013-08-24 19:49
额...其实我也不会玩命令行
不过简单的还知道一点...太复杂的就不行了,特别是编译开关太多了,就歇菜了...
#15
未未来2013-08-24 21:44
回复 12楼 peach5460
换了,受不了,
1