当前位置:  开发笔记 > 编程语言 > 正文

c ++类为什么需要main?

如何解决《c++类为什么需要main?》经验,为你挑选了2个好方法。

您好我正在用c ++编写一个小项目,我希望有一些类可以完成一些工作,我编写了接口和类的实现.

令我惊讶的是,我没有一个没有main()的简单类,我想有一个曾经实例化的类,它的方法可以被调用,做的事情,但我不需要(也不想要)类实现中的main().这是我想要拥有的一个例子:

file.h:

class animal
{
 public: 
   animal();
  ~animal();

 public:
   int method1(int arg1);

 private:
   int var1;
};

file animal.cpp:

#include "animal.h"

animal::animal(){...}
animal::~animal(){...}
int animal::method1(int arg1){return var1;}
}

我想将动物类称为另一个文件并让它工作,如下所示:file app.cpp:

#include 
#include "animal.h"

int main()
{
 animal dog;
 cout << dog.method1(42);
 return 0;
}

但是编译器给了我

/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../crt1.o: In function _start:

"(.text+0x18): undefined reference to `main`"

collect2: ld returned 1 exit status 

对于animal.cpp,但我不需要主,或者我需要它吗?

我哪里错了?



1> dirkgently..:

但我不需要(也不想)类实现中的main().

该功能main是您的切入点.这就是执行开始的地方.你需要有一个且只有一个这样的功能.

但是编译器给我"未定义参考主"为animal.cpp,但我并不需要一个有主,或者我需要它?

现在,您的问题看起来好像没有链接编译形式的app.cppanimal.cpp.

我在Makefile中不是那么强大,我使用的东西比如g ++ animal.h -o animal和g ++ animal.cpp但它给了我上面的错误

你不编译标题.所以不要使用:g++ animal.h

当你单独编译animal.cpp时,g ++创建了一个目标文件.您还需要编译的app.cpp,因为你确实需要main.编译app.cpp文件后,您必须将其与animal先前创建的目标文件链接.但是如果这些没有被链接,特别是包含该main功能的文件,你将会遇到你现在得到的错误.

但是,g++照顾我上面描述的内容.尝试这样的事情:

g++ animal.cpp app.cpp -o test

这将创建一个名为的可执行文件test,您可以使用以下命令运行

./test



2> Rob K..:

首先,这是错误的: animal dog = new animal();

你要么需要

animal * dog = new animal();
cout << dog->method1(42);
delete animal;

或者最好只是

animal dog;

其次,您需要将通过编译两个源.cpp文件生成的目标文件链接在一起.

gcc -o animal animal.cpp app.cpp 

如果你正在使用gcc,应该这样做.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有