在c++中编译和执行此代码的问题

borland Problems compiling and executing this code in C++

本文关键字:代码 问题 执行 c++ 编译      更新时间:2023-10-16

我试图在TurboC++ 3.0中编译此代码。然而,我得到了这些错误:

DOS.H 77: Too many types in declaration
DOS.H 77: { expected
DOS.H 77: Declaration does not specify a tag or an identifier
SARSAL.CPP 72: Cannot cast from 'int' to 'time'

我检查了库的目录,我在borlandc++ 5.02中运行了代码(不幸的是,我得到了图形错误或这个错误:Constructor cannot have a return type specification,在方法void Agente::Agente中),devc++和code::Blocks没有成功。

代码是由我们的AI老师提供的,应该可以正常工作。我如何让它编译?

谢谢你的帮助

我通常不会回答这种帖子(不仅仅是因为"TurboC++"问题),但我们都是新手,在某些时候需要帮助,但不知道如何寻求帮助,所以我将帮助你。

首先:不要使用TurboC++。正如其他人所说,它是古老的,需要你学习一门与今天的c++非常不同的语言,并且会教你许多坏习惯(例如#include <iostream.h>是错误的)。

有了这些,让我们开始吧,好吗?

您定义了一个构造函数(大约在第70行),并给它一个返回类型void。这是错误的:构造函数没有返回类型。正确的语法是:

Agente::Agente(void)
{
  randomize();
}

也许TurboC++需要返回类型(看到了吗?)或者这只是你的错误,但无论如何,这都是一个bug,因为这不是c++代码。

继续,在第127行:

if((Archivo = fopen("C:Documents and SettingsArCiGoEscritorioSOFTWARE_2DATOS.TXT","r"))!=NULL)

字符在c++中是特殊的(例如,n表示换行符,x01表示值为1的字符)。

如果你想使用它,你必须用另一个转义,像这样:

if((Archivo = fopen("C:\Documents and Settings\ArCiGo\Escritorio\SOFTWARE_2\DATOS.TXT","r"))!=NULL)

还有其他地方可以做同样的事情。修复这些,然后再试一次。我敢打赌你会有更好的运气,更少的错误要担心。

作为将来的参考,当您在寻求帮助时,请尝试发布一个SHORT,显示您所得到的错误的自包含程序,这样其他人就不需要费力地浏览数百行代码,并担心丢失头文件和平台特定的差异。