2012-12-26 82 views
0

我在頭文件(聲明)和.cpp文件(定義)中建立一個類。在「私人」部分我有一個無法在頭文件中使用自定義對象?

string m_name 

編譯器給我一個錯誤,當我嘗試編譯它。如果我用char *替換字符串,它工作正常。但是,我需要一個字符串,而不是char *。我應該在某處添加字符串標頭嗎?

在此先感謝。

+2

作爲一般性提示,當您發佈有關編譯器或鏈接器(或任何其他)錯誤的問題時,請將您收到的錯誤添加到您的文章中,這將非常有幫助。也請做一個錯誤的逐字拷貝,不要任何編輯或縮短。 –

回答

1

我懷疑有兩個問題:一,「我應該添加字符串標頭嗎?」 - 你應該

#include <string> 

二,如果你不using namespace std;,那麼你必須使用類,這是std::string並不僅僅是string的全名。

+1

而你不想「使用命名空間標準;」因爲它會污染包含該文件的任何其他文件。在頭文件中,在cpp文件中使用完全限定的名稱空間,隨意使用use/using語句。 –

+0

@RyanGuthrie是的,沒錯。 – 2012-12-26 19:43:48

2

確保你的頭文件頂部有#include <string>,並記住它位於std命名空間:std::string m_name;

+0

sftrabbit謝謝,修復它。我不知道我還必須添加「std ::」 – Bloodcount

+0

@Bloodcount大多數標準庫都是在'std'命名空間中定義的。只有宏,'operator new'和'operator delete'不是。 –

1

如果要使用字符串,基本上需要包含C的頭文件#include <string.h>或C++的#include <cstring>,否則會出錯。

+1

這個頭文件不會修復任何東西,它包含C字符串實用程序函數,而不是std :: string類。 – Nekuromento

相關問題