【问题标题】:Type name expected预期类型名称
【发布时间】:2017-12-14 16:02:04
【问题描述】:

在尝试定义“kolor”字符串时出现“错误 C:\BORLANDC\BIN\PIXEL.CPP 6: Type name expected”。编辑器:DOS 上的 Borland C++。该程序询问像素的 x、y 和颜色,清除屏幕并将像素放在屏幕上。怎么了?

#include <graphics.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
int x, y;
string kolor;

void main()
{
    cout << "PIXEL TEST";
    cout << "WPISZ LICZBE X";
    cin >> x;

    cout << "WPISZ LICZBE Y";
    cin >> y;

    cout << "WPISZ KOLOR";
    cin >> COLOR;

    cout << "DZIALAM... TRWA UMIESZCZANIE PIKSELA...";
    int driver = DETECT,mode;
    initgraph(&driver,&mode,"c:\\BORLANDC\\bgi");
        putpixel(x,y,kolor);
    getch();
    closegraph();
}

【问题讨论】:

  • 我假设你的编译器是“标准的”,足以让我的答案适用。请考虑升级您的编译器; Turbo C++ 并没有很好地遵循任何标准。
  • 尝试使用 char *。例如 char *kolor;
  • @pm100:我的目标是 DOS,而不是 Windows
  • 对不起,你对这个古编译器不走运。你为什么要使用它?

标签: c++ dos


【解决方案1】:

string 位于 std 命名空间中。

所以你需要写std::string kolor;#include &lt;string&gt;

您的coutcin 呼叫也是如此。

替代方案 - using namespace std; - 是可能的,但除了在简短的教程程序中(它提供清晰性)之外,这是一个糟糕的建议,但由于产生的命名空间污染,很少在生产代码中使用。

如果这个没有修复编译器错误,那么是时候升级你的编译器了。 Borland 编译器从来没有成为标准 C++ 编译器,尽管它在多年前首次发布时确实有其用途。

如果您过于依赖 Borland 编译器而无法迁移,那么您可以使用 C++ 标准库的第 3 方早期版本:STLPort 就是这样一个示例。

【讨论】:

  • OP 使用 borland c++,它甚至没有 std 和命名空间
  • @ArunAS 支持字符串吗?
  • @pm100 不支持字符串,只有char[]char*
【解决方案2】:

问题是Borland c++ 中没有string 数据类型。您需要使用char[]char*

但是看看你的实现,这不是你需要的,因为putpixel 的语法是

void putpixel(int x, int y, int color);

所以你需要传递一个整数作为颜色。查看所有颜色代码的整数值。你也可以称它为

putpixel(x,y,RED);
putpixel(x,y,BLUE);

一些标准颜色代码已经这样定义。

所以您需要在char[] 中输入,比较(硬代码),然后传递正确的颜色代码

颜色代码是

0   BLACK
1   BLUE
2   GREEN
3   CYAN
4   RED
5   MAGENTA
6   BROWN
7   LIGHTGRAY
8   DARKGRAY
9   LIGHTBLUE
10  LIGHTGREEN
11  LIGHTCYAN
12  LIGHTRED
13  LIGHTMAGENTA
14  YELLOW
15  WHITE

尽管强烈建议不要使用 c++ 版本。如果你的学校强迫你学习它,那好吧,但是你也需要学习那些从未使用过的版本,因为 Borland C++ 太过时了,没有人再使用它了

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多