【问题标题】:‘sortBook’ was not declared in this scope [duplicate]未在此范围内声明“sortBook”[重复]
【发布时间】:2021-08-29 21:21:57
【问题描述】:

我无法解决错误 - main.cpp:31:34: error: ‘sortBook’ is not declared in this scope in line sortBook(arr,arr+n,comparator);

我很抱歉提出一个应该有一个简单解决方案的问题,但这让我发疯了。我检查了所有常见错误。

 #include<iostream>
    using namespace std;
     class BOOK{
        private:
            char bookname[20];
            float bookprice;
        public:
            void getBookDetails()
            {
            cout<<"Enter the Book Name:";
             cin>>bookname;
             cout<<"Enter the Book Price:";
             cin>>bookprice;
              }
              void displayDetails()
              {
                cout<<"Book Name:"<<bookname<<endl;
                cout<<"Book Price:"<<bookprice<<endl;
              }
     };
     bool comparator(string a,string b)
    {
        return a<b;
    }
    int main()
    {
        int n=5;
        string arr[]={"sandwich","apple","banana","zombie","pear"};
        
        sortBook(arr,arr+n,comparator);
           for(int i=0;i<n;i++)
        {
            cout<<arr[i]<<" ";
        }
    }

【问题讨论】:

  • 也许,您应该将函数调用“sortBook”更改为“std::sort”。您还应该#include

标签: c++ arrays sorting object


【解决方案1】:

我认为只是您没有在任何地方声明 sortBook 函数并尝试使用它。

【讨论】:

  • 我应该在哪里申报?
  • 使用前需要声明。话虽如此,您在哪里实施sortBook()?也可能@Job_September_2020 是正确的,因为您应该使用std::sort() 而不是一些sortBook()
【解决方案2】:

您的错误出现是因为您没有定义方法“sortBook”。

有两种方法可以解决此错误:

  1. 在您的类中定义您自己的“sortBook”方法。
  2. 使用“算法”中定义的 C++ sort 方法。下面是我使用这种 sort 方法的代码。您必须在文件顶部添加“include algorithm”,然后调用 sort 方法。

#include<iostream>
#include<algorithm>   //////  YOU SHOULD INCLUDE THIS STATEMENT
    using namespace std;
     class BOOK{
        private:
            char bookname[20];
            float bookprice;
        public:
            void getBookDetails()
            {
            cout<<"Enter the Book Name:";
             cin>>bookname;
             cout<<"Enter the Book Price:";
             cin>>bookprice;
              }
              void displayDetails()
              {
                cout<<"Book Name:"<<bookname<<endl;
                cout<<"Book Price:"<<bookprice<<endl;
              }
     };
     bool comparator(string a,string b)
    {
        return a<b;
    }
    int main()
    {
        int n=5;
        string arr[]={"sandwich","apple","banana","zombie","pear"};
        
        std::sort(arr,arr+n,comparator); // HERE, YOU CALL : sort()
           for(int i=0;i<n;i++)
        {
            cout<<arr[i]<<" ";
        }
    }

注意:我上面的代码编译没有错误。它运行并产生正确的输出。如果您有任何其他问题,请告诉我。

【讨论】:

  • 谢谢,这段代码运行良好。但是我有一个问题,我无法在其中创建一个 Book 类型的数组对象,以及一个函数 sort book- 以按字母顺序对 arra 进行排序。我该怎么做。
  • @Utkarsh Chauhan,不客气。我很高兴它有效。顺便说一句,请接受答案,以便将来的读者在有类似问题时可以重复使用答案。 :-) 祝你有美好的一天。
  • 好的,非常感谢。
  • 如果要对 BOOK 对象数组进行排序,解决方案非常相似。 (1) 您可以编写一个新方法“比较器”,它有 2 个参数:bool 比较器(const Book& a, const Book& b) 并在该方法中比较“a”与“b”的“书名”。 (2)您可以将数据成员“bookname”公开,以便在“比较器”函数中访问它......如果您仍然需要额外的帮助,请用您自己的代码编写下一个问题,我们可以帮助您快速使用您的新代码。
  • 感谢您的解释。是的,现在我可以做到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多