C2061:语法错误:标识符'字符串' - 表现得很奇怪

时间:2015-07-28 06:27:43

标签: c++ string header std

我正在尝试学习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.

如果您知道如何解决我的问题,我很乐意听取您的意见。我非常乐意提供更多信息。

2 个答案:

答案 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语句。