2014-09-27 94 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()在Sales_item类中是私有的。公开它 – venki421 2014-09-27 21:18:07

+0

如果您认为问题出现在'Sales_item.h'中,那么为什么您向我们展示了其他一些文件? – 2014-09-27 21:18:28

+0

@ init6我做到了。现在的问题是我发布的“if”这一行。说“没有匹配调用std :: string” – Raigeki 2014-09-27 21:45:41

回答

0

我要出去肢体和猜测,你的类定义是这样的:

class Sales_item 
{ 
    std::string isbn; 
} 

类和结构是公共,私人和保护的标签为他们的会员资料,以及类将其成员默认标记为私有。你应该将其更改为阅读:

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

编辑:

当您添加()(带或不带参数)的标识符,你告诉编译器调用它的功能。拿出()的和你的代码应该工作。

+0

“private: std :: string isbn;”它是如何看起来在头文件 – Raigeki 2014-09-27 21:23:52

+0

@Raigeki:这是一个非差异。 – Deduplicator 2014-09-27 21:28:38

+0

@Raigeki你的代码显示调用一个名为'isbn()'的函数,所以我猜测你有一个返回一个私有'isbn'变量的函数。如果将公共标签添加到您所调用的内容中并未解决您的问题,请发布您的头文件。 – IllusiveBrian 2014-09-27 21:36:11

1

Sales_item类,你忘了做isbn方法public,并把它忘在其默认private知名度。

应该,总之,读这样的事情:

class Sales_item 
{ 
    public: 
    return_value isbn(); 
} 

没有public:线将是private默认在C++类。

+0

我公开它,但现在错误是在我的代码在OP中的行“如果”。它说“没有匹配调用std :: string” – Raigeki 2014-09-27 21:51:51