2014-09-27 57 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