我是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"
答案 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
类标头。您通常使用尖括号作为系统标题。