gpt4 book ai didi

c++ - 继承错误后访问方法

转载 作者:行者123 更新时间:2023-11-28 08:15:23 25 4
gpt4 key购买 nike

我正在为我的代码使用继承。 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;
}

下面的代码是针对派生类的。掉期税交换任务.h

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

using namespace std;

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

交换任务.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;

最佳答案

什么是 changeList 类型?

虽然你创建了一个派生类的对象,但我怀疑你是在把它压入基类的容器中。由于将派生对象插入 base 类型的容器,您可能在此错误之前也收到了很少的警告。

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

关于c++ - 继承错误后访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com