我在頭文件(聲明)和.cpp文件(定義)中建立一個類。在「私人」部分我有一個無法在頭文件中使用自定義對象?
string m_name
編譯器給我一個錯誤,當我嘗試編譯它。如果我用char *替換字符串,它工作正常。但是,我需要一個字符串,而不是char *。我應該在某處添加字符串標頭嗎?
在此先感謝。
我在頭文件(聲明)和.cpp文件(定義)中建立一個類。在「私人」部分我有一個無法在頭文件中使用自定義對象?
string m_name
編譯器給我一個錯誤,當我嘗試編譯它。如果我用char *替換字符串,它工作正常。但是,我需要一個字符串,而不是char *。我應該在某處添加字符串標頭嗎?
在此先感謝。
我懷疑有兩個問題:一,「我應該添加字符串標頭嗎?」 - 你應該
#include <string>
二,如果你不using namespace std;
,那麼你必須使用類,這是std::string
並不僅僅是string
的全名。
而你不想「使用命名空間標準;」因爲它會污染包含該文件的任何其他文件。在頭文件中,在cpp文件中使用完全限定的名稱空間,隨意使用use/using語句。 –
@RyanGuthrie是的,沒錯。 – 2012-12-26 19:43:48
確保你的頭文件頂部有#include <string>
,並記住它位於std
命名空間:std::string m_name;
。
sftrabbit謝謝,修復它。我不知道我還必須添加「std ::」 – Bloodcount
@Bloodcount大多數標準庫都是在'std'命名空間中定義的。只有宏,'operator new'和'operator delete'不是。 –
如果要使用字符串,基本上需要包含C的頭文件#include <string.h>
或C++的#include <cstring>
,否則會出錯。
這個頭文件不會修復任何東西,它包含C字符串實用程序函數,而不是std :: string類。 – Nekuromento
作爲一般性提示,當您發佈有關編譯器或鏈接器(或任何其他)錯誤的問題時,請將您收到的錯誤添加到您的文章中,這將非常有幫助。也請做一個錯誤的逐字拷貝,不要任何編輯或縮短。 –