名称空间 std 中的字符串未命名类型

问题描述 投票:0回答:5

这可能只是一个我没有看到的简单错误,但是 我想我只是做错了什么。别担心,我没有在标头中使用名称空间 std 功能或任何似乎是这个人的问题[我读到的问题类似于 我的][1] [1]:为什么我收到 string does not name a type 错误?

我现在收到 4 个错误:

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.h|8|错误:“字符串” 命名空间“std”未命名类型|

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.h|12|错误:“字符串” 命名空间“std”未命名类型|

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.h|13|错误:“字符串” 命名空间“std”未命名类型|

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.cpp|9|错误:否 类中声明的“std::string Nouns::nounGenerator()”成员函数 “名词”|

||=== 构建完成:4 个错误,0 个警告 ===|

这是我的头文件:

class Nouns
{
    public:
        Nouns();
        std::string noun;
    protected:
    private:
        int rnp; // random noun picker
        std::string dog, cat, rat, coat, toilet, lizard, mime, clown, barbie, pig, lamp, chair, hanger, pancake, biscut, ferret, blanket, tree, door, radio;
        std::string nounGenerator()
};

这是我的cpp 文件:

#include "Nouns.h"
#include <iostream>

Nouns::Nouns()
{

}

std::string Nouns::nounGenerator(){
    RollRandom rollRandObj;

    rnp = rollRandObj.randNum;

    switch(rnp){
    case 1:
        noun = "dog";
        break;
    case 2:
        noun = "cat";
        break;
    case 3:
        noun = "rat";
        break;
    case 4:
        noun = "coat";
        break;
    case 5:
        noun = "toilet";
        break;
    case 6:
        noun = "lizard";
        break;
    case 7:
        noun = "mime";
        break;
    case 8:
        noun = "clown";
        break;
    case 9:
        noun = "barbie";
        break;
    case 10:
        noun = "pig";
        break;
    case 11:
        noun = "lamp";
        break;
    case 12:
        noun = "chair";
        break;
    case 13:
        noun = "hanger";
        break;
    case 14:
        noun = "pancake";
        break;
    case 15:
        noun = "biscut";
        break;
    case 16:
        noun = "ferret";
        break;
    case 17:
        noun = "blanket";
        break;
    case 18:
        noun = "tree";
        break;
    case 19:
        noun = "door";
        break;
    case 20:
        noun = "radio";
        break;
    }

    return noun;
}
c++ string namespaces std
5个回答
107
投票

你需要

#include <string>

<iostream>
声明
cout
cin
,而不是
string


9
投票

Nouns.h
不包括
<string>
,但它需要。您需要添加

#include <string>

位于该文件的顶部,否则编译器第一次遇到时不知道

std::string
是什么。


4
投票

您需要添加:

#include <string>

在你的头文件中。


1
投票

通知

#include <string.h>

不是

#include <string>

区别在于

// C and C++ include "old" C-style string functions such as strlen, strcmp
#include <string.h>

在另一端

 // C++ only for the "new" features of the string class named std::string
 #include <string>

-2
投票

您需要添加

#include <string>

在这里,您尝试访问

string noun::
,但没有创建名为
string noun
的命名空间。 您正在尝试访问私人文件。

© www.soinside.com 2019 - 2024. All rights reserved.