gpt4 book ai didi

c++ - 不能实例化抽象类c++

转载 作者:行者123 更新时间:2023-11-30 01:08:24 30 4
gpt4 key购买 nike

我对这段代码有疑问 - 这是 taskData:

static std::map<int8_t, std::vector<Task>> taskData;

还有一个问题:

taskData.emplace(pi::enumerations::taskManager::taskCategory_t::SECURITY, std::vector<Task>{FirefightingTask()});

消防任务:

#pragma once

#include "Task.hpp"

namespace mc
{
class FirefightingTask :public Task
{
public:

FirefightingTask( uint8_t category = 0, uint8_t kind = 0, NPC* npc = nullptr );

virtual bool act() override;
};
}

任务:

#pragma once

#include "engine/Config.hpp"

#include <queue>

class NPC;

namespace mc
{
//Task
//Represents a task for AI object
class Task
{

public:
Task(uint8_t category = 0, uint8_t kind = 0, NPC* npc = nullptr );

uint8_t GetCategory()
{
return category;
}

uint8_t GetKind()
{
return kind;
}

bool operator==( const Task& second )
{
return this->kind == second.kind;
}

bool inProgress()
{
return doing;
}

virtual bool act() = 0;

private:

bool doing;

const int8_t category;

const int8_t kind;

NPC* owner;
};
}

错误是:

Error C2259 'mc::Task': cannot instantiate abstract class

我真的不知道为什么会出现这个错误。当我删除此行时:

        taskData.emplace(pi::enumerations::taskManager::taskCategory_t::SECURITY,std::vector<Task>{FirefightingTask()});

它没有问题:/

最佳答案

罪魁祸首是std::vector<Task> – 你不能创建 Task 的 vector 自 Task是抽象的。

您需要使用指针 vector 。

关于c++ - 不能实例化抽象类c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872649/

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