我正在尝试学习C ++,但是,我在自己的课程中使用的方法的参数是行为不端。当它使用'int'的dataType时,它可以正常工作而没有错误,但当我尝试将其更改为'string'dataType时,程序会因此错误而崩溃。
错误1错误C2061:语法错误:temp.h中的标识符'string' 8 col 1
我正在使用的课程如下:
工作代码 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文件中,都会出现问题。
我环顾四周,但没有一个答案似乎解决了我的问题。我非常喜欢这方面的帮助,我的想法很少。我试过重新安装C ++,搞乱:
using namepace std;
using std::string;
std::string instead of string
etc.
如果您知道如何解决我的问题,我很乐意听取您的意见。我非常乐意提供更多信息。
答案 0 :(得分:0)
πάνταῥεῖ有写回答,谢谢你!
他们说在需要时使用std :: string,在头文件中也使用#include <string>
。
答案 1 :(得分:0)
C ++执行单通道编译,因此需要在使用它之前声明std :: string - 包括在头文件中。
// Temp.h
#pragma once
#include <string>
class Temp
{
public:
Temp();
void doSomething(std::string blah);
};
我建议您在指定类这样的类时特定于头文件中,因为您可能很容易遇到另一个定义它自己string
的库,然后您会遇到命名冲突。保存cpp文件的using
import语句。