2014-09-27 4 views
-6

Я использую заголовочный файл «sales.item»Что это за ошибка заголовка, вызванная?

Я пишу небольшую программу, и она говорит мне, что заголовочный файл, а не моя программа, имеет ошибку. Каким-то образом последняя строка неверна. Ошибка говорит о том, что строка isbn является частной.

#include <iostream> 
#include "Sales_item.h" 

int main() 
{ 
Sales_item item1, item2; 
std::cin >> item1 >> item2; 
if (item1.isbn() == item2.isbn()) { // this checks if item1 and item2 are same book 
+0

Какое содержимое класса Sales_item? Скорее всего, метод isbn() является private внутри класса Sales_item. Сделать общедоступным – venki421

+0

Если вы считаете, что проблема в 'Sales_item.h', то почему вы показали нам какой-нибудь другой файл? –

+0

@ init6 сделал. Теперь проблема связана с строкой «if», которую я опубликовал. Высказывание «no match to call to std :: string» – Raigeki

ответ

0

Я собираюсь выйти на конечности и угадать, что ваш класс определен что-то вроде этого:

class Sales_item 
{ 
    std::string isbn; 
} 

Классы и структуры имеют государственные, частные и защищенные этикетки для своих данных членов и классов по умолчанию их члены помечены как закрытые. Вы должны изменить его следующим образом:

class Sales_item 
{ 
    public: 
     std::string isbn; 
} 

EDIT:

При добавлении () (с или без параметров) идентификатору, вы сообщаете компилятору назвать его как функцию. Выньте(), и ваш код должен работать.

+0

«private: std :: string isbn;» как это выглядит в заголовочном файле – Raigeki

+0

@Raigeki: Это не разница. – Deduplicator

+0

@Raigeki Ваш код показывает вызов функции 'isbn()', поэтому я предполагал, что у вас есть функция, которая возвращает приватную переменную 'isbn'. Если добавление публичного ярлыка к тому, что вы вызываете, не исправляет вашу проблему, отправьте свой заголовочный файл. – IllusiveBrian

1

В Sales_item классе вы забыли сделать isbn метод public, и оставил его в своей видимости по умолчанию private.

Он должен, в общем, читать что-то вроде этого:

class Sales_item 
{ 
    public: 
    return_value isbn(); 
} 

Без public: линии будет private по умолчанию в классах C++.

+0

Я сделал это общедоступным, но теперь ошибка связана с линией «if» в моем коде в OP. В нем говорится: «Нет совпадения для вызова в std :: string» – Raigeki