小编mvx*_*xxx的帖子

由于分配导致的c ++指针算术

我创建了一个包含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 ++中的指针算法知之甚少,那真的很危险.这些元素是否一个接一个地靠近?

c++ math pointers

4
推荐指数
1
解决办法
113
查看次数

无法实例化抽象类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)

c++ class abstract

1
推荐指数
1
解决办法
469
查看次数

标签 统计

c++ ×2

abstract ×1

class ×1

math ×1

pointers ×1