1

c++ 入门第 5 版中的一个练习题要求编写自己的sales_data课程版本。

我是这样做的

#include <iostream>
#include <string>

struct sales data
{
    string bookno;
    unsigned int books sold;
    double revenue;
};

int main()
{
    return 0;
}

运行它会出现以下错误:

Variable sales_data has an initializer, but an incomplete type

String was not declared in this scope (How do I declare a string?)
4

2 回答 2

7

第一个问题:您忘记了名称中的下划线(或其他字符)sales_databooks_sold. C++ 中的标识符不能包含空格:

struct sales_data
//          ^

unsigned int books_sold;
//                ^

第二个问题string:您应该使用它所属的命名空间来限定:

    std::string bookno;
//  ^^^^^

或者在使用非限定名称using之前对其进行声明:string

using std::string;

这是您的程序在上述所有修复后的样子:

#include <iostream> // You don't seem to need this for this program
#include <string>

struct sales_data
{
    std::string bookno;
    unsigned int books_sold;
    double revenue;
};

int main()
{
    return 0;
}
于 2013-06-03T09:21:09.660 回答
1

这个

struct sales data

应该

struct sales_data

注意下划线。标识符或类型名称中的空格是不合法的。

于 2013-06-03T09:20:12.070 回答