简单c++问题,关于自定义头和相关编译问题.50分

pqzha1 2008-08-22 02:06:53
我定义3个文件,plane.h, plane.cpp. app.cpp (app.cpp是主程序)

--------------------plane.h---------------------------
#ifndef PLANE_H
#define PLANE_H


class Plane
{
private:
int ticketNum;

public:
Plane (int);
int getNum(void);
void setNum(int);
};


#endif
--------------------plane.cpp------------------------------------
#include <iostream>
#include "plane.h"
using namespace std;

Plane::Plane(int num)
{
ticketNum = num;

}


int Plane::getNum()
{
return ticketNum;
}


void Plane::setNum(int num)
{
ticketNum = num;
}
------------------app.cpp---------------------------------
#include "plane.h"
#include <iostream>

using namespace std;

int main()
{
Plane a(5);
cout<<a.getNum()<<endl;


}
-------------------------------------
我用这个命令去编译(不确定对不对)

g++ app.cpp plane.cpp -o app

但是,错误发生,结果如下:

[root@localhost assignment]# g++ app.cpp plane.cpp -o app
app.cpp: In function `int main()':
app.cpp:9: error: 'class Plane' has no member named 'getNum'

我不知道为什么说plane类里没有成员函数getNum.我定义了啊~ 
解决转200卡..
...全文
162 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maxwell 2008-08-22
  • 打赏
  • 举报
回复
楼上说的还真有可能发生,要是这样的话,楼主的编译器可够老了。
Darkneece 2008-08-22
  • 打赏
  • 举报
回复
int Plane::getNum(void)
{
return ticketNum;
}

改成这样试一下
juvily 2008-08-22
  • 打赏
  • 举报
回复
1.编译多个文件,但不连接:
g++ file1.cpp file2.cpp
会生成两个文件:file1.o, file2.o

2.连接:
g++ -o outFileName file1.o file2.o
会生成一个可执行文件:outFileName。

如果想,一步就完成编译和连接,那么:
g++ -o outFileName file1.cpp file2.cpp

-o选项控制是否连接。
Maxwell 2008-08-22
  • 打赏
  • 举报
回复
那你把-g改成-O2呢?O是优化。字母O。
pqzha1 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 coverallwangp 的回复:]
引用 12 楼 pqzha1 的回复:
我刚试了下g++ -g plane.cpp app.cpp -o app, 居然通过了!

-g什么意思啊?

-g
  只是编译器,在编译的时候,产生调试信息。
[/Quote]

我也搜到这个了,但不知道什么意思.也不知道为什么加了这个就不出错了
coverallwangp 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 pqzha1 的回复:]
我刚试了下g++ -g plane.cpp app.cpp -o app, 居然通过了!

-g什么意思啊?
[/Quote]
-g
  只是编译器,在编译的时候,产生调试信息。
pqzha1 2008-08-22
  • 打赏
  • 举报
回复
我刚试了下g++ -g plane.cpp app.cpp -o app, 居然通过了!

-g什么意思啊?
pqzha1 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Maxwell 的回复:]
g++ plane.cpp app.cpp -o app
调换一下顺序试试呢?

我的版本4.3和3.4.4都没有问题,不过是在windows下。
[/Quote]

还是一样..

顺便说下:我不把程序分成3个,如果是一个的话,声明&实现&main都在一个文件的话,是没问题的...
Maxwell 2008-08-22
  • 打赏
  • 举报
回复
g++ plane.cpp app.cpp -o app
调换一下顺序试试呢?

我的版本4.3和3.4.4都没有问题,不过是在windows下。
pqzha1 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyu637 的回复:]
他用的不是windows
用的是gcc in linux
[/Quote]

恩,我用的linux

LS说代码没问题,为什么我这里有问题?哭了~~ 
难道是编译器坏了..
pqzha1 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xkyx_cn 的回复:]
加一个参数-I.
把当前目录也加到包含目录:

C/C++ code
g++ -I. app.cpp plane.cpp -o app
[/Quote]


还是完全一样的错误提示,说找不到那个函数
wuyu637 2008-08-22
  • 打赏
  • 举报
回复
他用的不是windows
用的是gcc in linux
wangdeqie 2008-08-22
  • 打赏
  • 举报
回复
我试了,代码没问题
Maxwell 2008-08-22
  • 打赏
  • 举报
回复
在windows下没有问题,用楼主的代码和命令可以编译过。没法复现你的问题。
main函数最后别忘了加return语句。
xqls_xqls 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
编译的命令好像不对。
[/Quote]

用VC++6.0没有问题。
xkyx_cn 2008-08-22
  • 打赏
  • 举报
回复
加一个参数-I.
把当前目录也加到包含目录:

g++ -I. app.cpp plane.cpp -o app
pqzha1 2008-08-22
  • 打赏
  • 举报
回复
那应该是什么样的命令呢?
多谢!!
wuyu637 2008-08-22
  • 打赏
  • 举报
回复
编译的命令好像不对。

64,654

社区成员

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

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