语法错误:缺少';'在标识符之前

时间:2010-05-22 16:23:18

标签: c++ visual-studio

我是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"

3 个答案:

答案 0 :(得分:4)

您需要包含< string>,而不是“string.h”。或者除了“string.h”。

string.h是标准C字符串处理函数(strcpy()和朋友的C头)。

<串GT;是标准的C ++标题,其中定义了'string'。

使用string:

时还需要指定std命名空间
std::string m_errorText;

或者使用:

using namespace std;

位于文件顶部的某处。

您还应该对系统包含文件使用尖括号。

答案 1 :(得分:1)

你提供的信息很少,这只是一个疯狂的猜测,但乍一看,我猜你的问题是你没有包括<string>,只有"string.h"(前者定义了C ++ std::string类,后者定义了C函数来操作以空字符结尾的字符串。

顺便说一句,您通常希望对系统标题使用尖括号,因此它应该是<string.h>

答案 2 :(得分:1)

尝试#include <string>,而不是#include "string.h",string.h / cstring是旧的C-string标头,string是新的C ++ std::string类标头。您通常使用尖括号作为系统标题。