继承错误后访问方法

时间:2011-10-23 12:35:20

标签: c++ inheritance base-class

我正在为我的代码使用继承。 ChangeRequest是我的基类。代码如下。

ChangeRequest.h

#include <iostream>
#include <string>

using namespace std;

class ChangeRequest
{
int swapDay;
int newDay;
public:
void setSwapDay(int newDay);
int getSwapDay();

void setNewDay(int newDay);
int getNewDay();

};

ChangeRequest.cpp

#include "ChangeDutyRequest.h"

void ChangeRequest::setSwapDay(int newDay)
{
    swapDay = newDay;
}

int ChangeRequest::getSwapDay()
{
    return swapDay;
}

void ChangeRequest::setNewDay(int day)
{
    newDay = day;
}   

int ChangeRequest::getNewDay()
{
    return newDay;
}

以下代码适用于派生类。 SwapDuty SwapDuty.h

#include <iostream>
#include <string>
#include "ChangeRequest.h"

using namespace std;

class SwapDuty: public ChangeRequest
{
    string requester;
    public:
    void setRequester(string member);
    string getRequester();
};

SwapDuty.cpp

   #include "SwapDuty.h"

    void SwapDuty::setRequester(string member)
    {
        requester = member;
    }

    string SwapDuty::getRequester()
    {
        return requester;
    }

当我使用getRequester()编译和访问请求者属性时。我收到以下错误。

'class ChangeRequest' has no member named 'getRequester'

这就是我使用我的代码的方式

有人可以告诉我我做错了什么吗?提前致谢

    SwapDuty newSwapDutyRequest;
        for(int i = 0; i < tempList.size(); i++ )
        {
            if(tempList[i].getPersonToPerform().getName() == loginMember)
            {
                newSwapDutyRequest.setRequester(loginMember);   
                newSwapDutyRequest.setSwapDay(swapDay);
                newSwapDutyRequest.setNewDutyDay(daySwapWith);
                break;
            }
        }
        changeList.push_back(newSwapDutyRequest);

cout << changeList[1].getRequester() << endl;

2 个答案:

答案 0 :(得分:1)

什么是changeList的类型?

虽然您已经创建了派生类的对象,但我怀疑您是将它推入基类的容器中。可能在此错误之前您收到的警告很少,因为将派生对象推送到类型为base的容器中。

如果要创建基类的容器并推入派生类对象,则需要使用指向对象的指针而不是对象本身。

答案 1 :(得分:0)

您的班级ChangeDutyRequest在哪里?你没有表现出来。也许你忘了从正确的基础继承它或者错误地调用它?

显示更全面的代码示例