这个是我在VC下写的一段代码,在VC下可以正常运行,但搬到linux下就出现问题了。
main,cpp:
#include
#include
using namespace std;
#include "anminial.h"
#include "dog.h"
#include "cat.h"
class Dog;
class Cat;
void soundPlay(Anminial &A1,Anminial &A2)
{
}
void soundPlay(Anminial *A1,Anminial *A2)
{
A1->sound();
A2->sound();
}
int main()
{
// Anminial *anminial = new Anminial();
// Dog *dog = new Dog("aa",11);
// Cat *cat = new Cat("bb",12);
Dog dog;
Cat cat;
// anminial->run();
dog.run();
cat.run();
cout<<"**********************************"<
// anminial->sound();
dog.sound();
cat.sound();
cout<<"**********************************"<
// anminial = dog;
// anminial.run();
// anminial = cat;
// anminial.run();
// cout<<"**********************************"<
// dog = cat; //虏禄??卤??毛
// dog->run();
// cout<<"**********************************"<
soundPlay(&dog,&cat);
cout<<"**********************************"<
soundPlay(cat,dog);
cout<<"**********************************"<
return 0;
}
cat.h:
#ifndef _CAT__H_
#define _CAT__H_
//#include "stdafx.h"
#include "anminial.h"
#include
using namespace std;
class Cat : public Anminial
{
public:
Cat();
Cat(string name,int weight);
~Cat();
void sound();
void run();
};
#endif
Cat.cpp:
#include "cat.h"
#include "animial.h"
// #include "anminial.h"
#include
using namespace std;
Cat::Cat()
: Anminial()
{
this->name = "";
this->weight = 11;
}
Cat::Cat(string name,int weight)
: Anminial(name,weight)
{
this->name = name;
this->weight = weight;
}
void Cat::run()
{
cout<<"cat is runnint"<
void Cat::sound()
{
cout<<"cat is miaoing"<
还有一个dog类,类似于cat 这里就不写出来了,
在linux下出现很多问题,大部分解决了,但下面的错误我想了两天也没想出来是什么原因。请大家给看看是什么问题。
好像在连接的时候出错的。找搜索了一下,大致原因是找不到这个函数的实现。但是不知道怎么解决。
main.o(.text+0x40): In function `main':
/home/wanglei/test2/main.c:31: undefined reference to `Dog::Dog[in-charge]()'
main.o(.text+0x4b):/home/wanglei/test2/main.c:32: undefined reference to `Cat::Cat[in-charge]()'
main.o(.text+0x53):/home/wanglei/test2/main.c:35: undefined reference to `Dog::run()'
main.o(.text+0x5b):/home/wanglei/test2/main.c:36: undefined reference to `Cat::run()'
main.o(.text+0x85):/home/wanglei/test2/main.c:40: undefined reference to `Dog::sound()'
nassa1985 于 2008-11-12 10:24:55发表:
linux下一般是用的C的库。。没有类的概念的。。
feir8510 于 2008-10-27 20:37:56发表:
linux下是g++ 可能库版本不兼容
bugaoxing 于 2008-10-26 22:13:06发表:
太长了,又没有行号。好难看得下去,你是怎样编译的??
jinger7281 于 2008-10-23 10:40:00发表:
据说linux下c++程序是.cpp和.C命名的看你的好像是以.c命名的
wangdu2002 于 2008-10-21 02:05:29发表:
兄弟到chinaunix论坛去请教下,我英文不行,不过看反馈信息,好象没找到头文件,可能环境变量吧