我创建了一个包含3个相同类型元素的类(类似于std::pair<T,std::pair<T,T>>).此外,我准备使用for(auto&var:t)
但我不知道我是否安全地做到了.
template <class T>
class Troika
{
public:
Troika(const T& f, const T& s, const T& t)
:first(f), second(s), third(t) {}
Troika(){}
T first;
T second;
T third;
typedef T* iterator;
typedef const T* const_iterator;
iterator begin()
{
return &first;
}
const_iterator begin() const
{
return &first;
}
iterator end()
{
return &third+1;
}
const_iterator end() const
{
return &third + 1;
}
};
Run Code Online (Sandbox Code Playgroud)
我的意思是这个部分:return &third + 1;.我知道如果有人对c ++中的指针算法知之甚少,那真的很危险.这些元素是否一个接一个地靠近?
我有这个代码的问题 - 这是taskData:
static std::map<int8_t, std::vector<Task>> taskData;
Run Code Online (Sandbox Code Playgroud)
并且有一个问题:
taskData.emplace(pi::enumerations::taskManager::taskCategory_t::SECURITY, std::vector<Task>{FirefightingTask()});
Run Code Online (Sandbox Code Playgroud)
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;
};
}
Run Code Online (Sandbox Code Playgroud)
任务:
#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 ); …Run Code Online (Sandbox Code Playgroud)