C++ 为什么没有正确调用我的函数?

C++ 为什么没有正确调用我的函数?,c++,C++,我只是使用继承来编写一个程序,并尝试调用在派生类中创建的函数。当我运行我的代码“标识符”搜索过程“未定义”时,我收到这个错误,“SeaChurChar”在这个范围内没有被声明“我知道这是你在C++中调用一个函数的原因,我被卡住了。感谢您的帮助 #include <iostream> using namespace std; class User { protected: string firstName; string lastName; string id

我只是使用继承来编写一个程序,并尝试调用在派生类中创建的函数。当我运行我的代码“标识符”搜索过程“未定义”时,我收到这个错误,“SeaChurChar”在这个范围内没有被声明“我知道这是你在C++中调用一个函数的原因,我被卡住了。感谢您的帮助

#include <iostream>

using namespace std;
class User
{
protected:
    string firstName;
    string lastName;
    string idNumber; //attributes for user class

public:
    virtual void print()
    {
        cout << firstName + lastName << "has ID number " << idNumber << ".\n";  //virtual function to print all info about user
    }
    User(string name1, string name2, string ID) //constructor for base class when user is created
    {
        firstName = name1;
        lastName = name2;
        idNumber = ID;
    }
    ~User() {}

    string getFirst() { return firstName; }
    string getLast() { return lastName; }
    string getID() { return idNumber; }
};

class Student : public User
{
    protected:

    public:
        Student(string name1, string name2, string ID) :User(name1, name2, ID) {}
        ~Student(){}
        
        void searchCourse()
        {
            User::print();
            cout << "Searching Courses";
        }
        void addDrop()
        {
            User::print();
            cout << "Add Dropping courses"; 
        }
        void printSchedule()
        {
            User::print();
            cout << "Printing Schedule";
        }
};

class Instructor : public User
{
    protected:

    public:
        Instructor(string name1, string name2, string ID) :User(name1, name2, ID) {}
        ~Instructor(){}
        
        void printSchedule()
        {
            User::print();
            cout << "Printing Schedule";
        }
        void printRoster()
        {
            User::print();
            cout << "Printing Class List";
        }
        void classSearch()
        {
            User::print();
            cout << "searching for course"; 
        }
};        

class Admin : public User
{
    protected:

    public:
        Admin(string name1, string name2, string ID) :User(name1, name2, ID) {}
        ~Admin(){}
        
        void addCourse()
        {
            User::print();
            cout << "Adding Course";
        }
        void removeCourse()
        {
            User::print();
            cout << "Removing Course";
        }
        void addRemoveUser()
        {
            User::print();
            cout << "Adding/Removing user"; 
        }
        void addRemoveStudent()
        {
            User::print();
            cout << "Adding/Removing Student from Course";
        }
        void SearchPrint()
        {
            User::print();
            cout << "Searching and Printing";
        }
};
int main()
{
    searchCourse();
} 
   
#包括
使用名称空间std;
类用户
{
受保护的:
字符串名;
字符串lastName;
string idNumber;//用户类的属性
公众:
虚拟空打印()
{

cout您需要创建student对象并从中调用函数

Student*s=新学生(“,”,“);
s->searchCourse();

searchCourse()
Student
类的
public
成员。您必须创建
Student
类的对象并调用
searchCourse()
使用该对象。我让它创建了一个student对象,但现在它说searchCourse未在此范围内声明1)您忘记了
#include
。2)
用户
类应该有一个
虚拟
析构函数。我仍然得到相同的错误,即searchCourse未在此范围内声明。您可以粘贴完整的e吗rror@VinayakSingla
Student*s=new Student(“,”“,”);
——完全不需要使用
new
。您无缘无故地调用分配器,而且您的代码现在可能会出现内存泄漏。只需要一个简单的
Student(“,”“,”);s.searchCourse();
。@Paulmckenzie明白了