C++ 为什么我会得到<;功能>;不是<;类别>;?我试图传递一个字符串并从中返回

C++ 为什么我会得到<;功能>;不是<;类别>;?我试图传递一个字符串并从中返回,c++,bubble-sort,C++,Bubble Sort,我试图将一个字符串传递给一个函数,该函数将被排序。然后让排序后的字符串从中返回。它不会编译,甚至说“binarySort不是其他的成员” 这是不允许做的事吗 这是类文件 #include "Others.h" #include <iostream> using namespace std; char Others::inputCheck(char guess) { while (!isalpha(guess)) { //If the inputs are not alph

我试图将一个字符串传递给一个函数,该函数将被排序。然后让排序后的字符串从中返回。它不会编译,甚至说“binarySort不是其他的成员”

这是不允许做的事吗

这是类文件

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

using namespace std;

char Others::inputCheck(char guess) {
    while (!isalpha(guess)) { //If the inputs are not alphabets, keep looping.
        cout << "Enter again: ";
        cin >> guess;
    }
    cin.ignore(1, '\n');
    guess = tolower(guess);

    return guess;
}

string Others::binarySort(string sampleText) {
    //Bubble sorting the string. (Copy pasted)
    for (int i = 0; i < sampleText.length(); i++)
    {
        for (int j = i + 1; j < sampleText.length(); j++)
        {
            if (sampleText[i] > sampleText[j]) //if previous has bigger ascii value than next,
            {
                //swapping the prev and next characters
                char temp = sampleText[i];
                sampleText[i] = sampleText[j];
                sampleText[j] = temp;
            }
        }
    }
    return sampleText;
}
主要功能

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

using namespace std;
int main() {
    string sortedText, sampleText = "toibeawn";
    Others sorter;
    sortedText = sorter.binarySort(sampleText);
    cout << "Text after sorted:\n";
    cout << sortedText;

    return 0;
}
#包括
#包括“Others.h”
使用名称空间std;
int main(){
字符串sortedText,sampleText=“toibeawn”;
其他分拣机;
sortedText=sorter.binarySort(sampleText);
不能在使用命名空间std
声明
之前包含“Others.h”,这会导致
字符串在包含的标题中无法识别

在标题“Others.h”中添加
usingnamespace std;
,错误将消失


通常,在标题中使用命名空间std是一种不好的做法,您最好只编写
std::string
std::string binarySort(std::string sampleText)


需要一个名称空间

一切正常。需要更改一个简单的更改

  • 在标题中包含此标题:#包含并使用std名称空间
所以在更改之后,您的标题看起来像

#ifndef OTHERS_HEADER
#define OTHERS_HEADER
#pragma once

#include <iostream>
using namespace std;
\ifndef OTHERS\u标题
#定义其他\u标题
#布拉格语一次
#包括
使用名称空间std;
主要问题是,由于缺少字符串头和std名称空间,因此在头中没有解决字符串


注意:始终尝试先包含语言标题,然后再包含自定义标题。

您的程序看起来不错,是否将所有相关文件保存在同一项目或同一目录中(取决于您的IDE)?它与您的构建环境有关。此处的所有问题都必须以纯文本形式包含问题本身的所有相关信息。链接可以随时停止工作,使问题变得毫无意义。以图像形式显示的代码、数据或错误无法复制/粘贴;或编辑或编译以供进一步研究和调查。此问题所有链接和图像都将被删除,并替换为所有相关信息(纯文本)。所有代码都必须满足a的所有要求。您可以在此处找到许多其他问题,其中包括纯文本形式的所有内容,我也看不出为什么这个问题不能解决。您可以从“输出”中复制编译错误tab.注意第一个错误:它会报告它发现的第一个错误,在本例中,这是因为您在其他目录中缺少必要的标题。h.Studephen,是的,所有内容都在一个目录中,我正在使用Visual Studio Community 2019。
标题中未定义
字符串,因此这是一个错误的标题。是的,c更正,需要包含字符串头。更正了答案。我从所有文件中删除了所有“使用命名空间std”,并使用了“std::”。但它不起作用。正如ALX23z所建议的,我没有尝试将“命名空间std”添加到头文件,因为他说这是一种不好的做法。在尝试添加“使用命名空间std"它可以工作。@FluxCute iostream在类实现文件和主文件上都添加了,但只缺少字符串头和名称空间。快速修复也可以只在类头文件上添加头文件,并在同一文件中包含名称空间std来解决问题。我已删除了所有名称空间,但它没有编译。@FluxCute不在头文件中定义了
std::string
的目标,而“Others.h”没有包含定义它的目标。通过
#Include
#ifndef OTHERS_HEADER
#define OTHERS_HEADER
#pragma once

#include <iostream>
using namespace std;