C2061: syntax error : identifier 'string' - Behaving weird
C2061: syntax error : identifier 'string' - Behaving weird
我正在尝试学习 C++,但是,我自己 class 中的方法的参数行为不正常。当它使用 'int' 的数据类型时,它工作正常,没有错误,但是当我尝试将其更改为 'string' 数据类型时,程序崩溃并出现此错误。
Error 1 error C2061: syntax error : identifier 'string' in temp.h ln
8 col 1
我使用的classes如下:
工作代码
TesterClass.cpp // 入口点
#include "stdafx.h"
#include "Temp.h"
int _tmain(int argc, _TCHAR* argv[])
{
Temp tmp;
tmp.doSomething(7);
return 0;
}
Temp.h
#pragma once
class Temp
{
public:
Temp();
void doSomething(int blah);
};
Temp.cpp
#include "stdafx.h"
#include "Temp.h"
#include <iostream>
#include <string>
using std::string;
Temp::Temp()
{
std::cout << "Entry" << std::endl;
string hi;
std::cin >> hi;
std::cout << hi << std::endl;
}
void Temp::doSomething(int blah)
{
std::cout << blah;
}
损坏的代码
Temp.h
#pragma once
class Temp
{
public:
Temp();
void doSomething(string blah);
};
Temp.cpp
#include "stdafx.h"
#include "Temp.h"
#include <iostream>
#include <string>
using std::string;
Temp::Temp()
{
std::cout << "Entry" << std::endl;
string hi;
std::cin >> hi;
std::cout << hi << std::endl;
}
void Temp::doSomething(string blah)
{
std::cout << blah;
}
当我将参数'blah'调整为字符串时,在.h和.cpp文件中,问题都出现了。
我环顾四周,但 none 的答案似乎解决了我的问题。我非常希望在这方面得到帮助,但我没有主意。我试过重新安装 C++,弄乱了:
using namepace std;
using std::string;
std::string instead of string
etc.
如果您知道如何解决我的问题,我很乐意听取您的意见。我非常乐意提供更多信息。
πìντα ῥεῖ 写了答案,谢谢!
他们说在需要的时候使用 std::string,并且在头文件中也使用 #include <string>
。
C++ 执行单遍编译,因此 std::string 需要在使用之前声明 - 包括在头文件中。
// Temp.h
#pragma once
#include <string>
class Temp
{
public:
Temp();
void doSomething(std::string blah);
};
我鼓励您在像这样指定 类 时在头文件中具体说明,因为您可能很容易遇到另一个定义它自己的库 string
然后您会 运行 进入命名冲突。为您的 cpp 文件保存 using
导入语句。
我正在尝试学习 C++,但是,我自己 class 中的方法的参数行为不正常。当它使用 'int' 的数据类型时,它工作正常,没有错误,但是当我尝试将其更改为 'string' 数据类型时,程序崩溃并出现此错误。
Error 1 error C2061: syntax error : identifier 'string' in temp.h ln 8 col 1
我使用的classes如下:
工作代码 TesterClass.cpp // 入口点
#include "stdafx.h"
#include "Temp.h"
int _tmain(int argc, _TCHAR* argv[])
{
Temp tmp;
tmp.doSomething(7);
return 0;
}
Temp.h
#pragma once
class Temp
{
public:
Temp();
void doSomething(int blah);
};
Temp.cpp
#include "stdafx.h"
#include "Temp.h"
#include <iostream>
#include <string>
using std::string;
Temp::Temp()
{
std::cout << "Entry" << std::endl;
string hi;
std::cin >> hi;
std::cout << hi << std::endl;
}
void Temp::doSomething(int blah)
{
std::cout << blah;
}
损坏的代码 Temp.h
#pragma once
class Temp
{
public:
Temp();
void doSomething(string blah);
};
Temp.cpp
#include "stdafx.h"
#include "Temp.h"
#include <iostream>
#include <string>
using std::string;
Temp::Temp()
{
std::cout << "Entry" << std::endl;
string hi;
std::cin >> hi;
std::cout << hi << std::endl;
}
void Temp::doSomething(string blah)
{
std::cout << blah;
}
当我将参数'blah'调整为字符串时,在.h和.cpp文件中,问题都出现了。
我环顾四周,但 none 的答案似乎解决了我的问题。我非常希望在这方面得到帮助,但我没有主意。我试过重新安装 C++,弄乱了:
using namepace std;
using std::string;
std::string instead of string
etc.
如果您知道如何解决我的问题,我很乐意听取您的意见。我非常乐意提供更多信息。
πìντα ῥεῖ 写了答案,谢谢!
他们说在需要的时候使用 std::string,并且在头文件中也使用 #include <string>
。
C++ 执行单遍编译,因此 std::string 需要在使用之前声明 - 包括在头文件中。
// Temp.h
#pragma once
#include <string>
class Temp
{
public:
Temp();
void doSomething(std::string blah);
};
我鼓励您在像这样指定 类 时在头文件中具体说明,因为您可能很容易遇到另一个定义它自己的库 string
然后您会 运行 进入命名冲突。为您的 cpp 文件保存 using
导入语句。