2010-05-22 72 views
1

之前,我是新來的C++,要調試的代碼語法錯誤:缺少';'標識

class cGameError 
{ 
    string m_errorText; 
    public: 
     cGameError(char *errorText) 
     { 
      DP1("***\n*** [ERROR] cGameError thrown! text: [%s]\n***\n", 
      errorText); 
      m_errorText = string(errorText); 
     } 

     const char *GetText() 
     { 
      return m_errorText.c_str(); 
     } 
}; 

enum eResult 
{ 
    resAllGood = 0, // function passed with flying colors 
    resFalse = 1, // function worked and returns 'false' 
    resFailed = –1, // function failed miserably 
    resNotImpl = –2, // function has not been implemented 
    resForceDWord = 0x7FFFFFFF 
}; 

這個頭文件中的以下行包括在程序作爲遵循

#include "string.h" 
#include "stdafx.h" 
#include "Chapter 01 MyVersion.h" 
#include "cGameError.h" 

回答

4

您需要包括<串>,不是「string.h」。或者除了「string.h」。

string.h中是標準C字符串處理函數的C頭(的strcpy()和朋友。)

<串>是標準C++頭,其中 '字串' 被定義。

您還需要使用字符串時指定std命名空間:

std::string m_errorText; 

或使用:

using namespace std; 

在某處你的文件的頂部。

您還應該爲系統包含文件使用尖括號。

+0

是的,還需要名稱空間標準; – numerical25 2010-05-22 16:37:21

1

你已經提供了足夠的信息很少,這只是胡亂猜測,但乍一看,我猜問題是,你還沒有包括<string>,只有"string.h"(前者定義了C++ std::string類,用於操縱空終止字符串後者的C函數。

順便說一句,通常要使用角括號用於系統頭,所以它應該是<string.h>

+0

實際上,「string.h」不是* any *標準的一部分 - 當您將標頭名稱括在引號中時,僅在* current目錄中搜索文件*。 – 2010-05-22 16:38:48

+1

@Stefan:不是。首先以實現定義的方式(通常是當前目錄)搜索,如果失敗,則重新處理,如同使用尖括號(C99,§6.10.2/ 3,C++ 03§16.2/ 3)一樣。 – 2010-05-22 16:52:20

+0

啊,好的。我懂了。 – 2010-05-22 17:08:24

1

嘗試#include <string>,代替#include "string.h",串.h/cstring是舊的C字符串標題,字符串是新的C++ std::string類頭。你通常使用角括號來表示系統頭文件。