2013-06-03 2 views
1

Заданный вопрос из C++ primer 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?) 
+0

Это должно быть 'std :: string' - вы забыли классификатор пространства имен. – Yuushi

+0

Я не знал, что struct принадлежит std. В любом случае, он по-прежнему дает те же ошибки. –

ответ

1

Это

struct sales data 

Должно быть

struct sales_data 

Обратите внимание на символ подчеркивания. Пробелы не являются юридическими в идентификаторах или именах типов.

+0

@ пользователь1929959, да это тоже. – StoryTeller

+0

Хорошо, теперь он говорит об ошибке: ожидаемый неквалифицированный идентификатор перед структурой –

+0

Выполнено. Делал глупую ошибку. Благодаря! –

7

Первая проблема: Вы забыли подчеркивание (или какой-либо другой символ) в названиях sales_data и books_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; 
} 
+0

Добавлено с использованием пространства имен std; Все те же ошибки. Также добавлен символ подчеркивания. Не помогло. –

+0

Хорошо, теперь он говорит об ошибке: ожидаемый неквалифицированный идентификатор перед структурой –

+0

Выполнено. Делал глупую ошибку. Благодаря! –

Смежные вопросы