C++ Vector关键字"ref"

Jos*_*toS 1 c++ vector

我想知道矢量类型定义中"ref"的含义是什么.

我是C++的新手,我正在学习我发现的代码片段

vector<ref<StupidBug> > bugs;
Run Code Online (Sandbox Code Playgroud)

其中"StupidBug"是一个类.

它不能在gcc/C++ 11中编译,因为"模板参数">"无效"但是向左移动">",更接近前一个仍然会给出相同的错误

这让我感到困惑,我不知道错误在哪里.

代码已经有几年了,难道写得不好吗?"ref"是否属于c ++?

那是一个多元化的人吗?还是模板?

背景信息:

整体是关于在网格中插入和移动"错误",向量保存错误的数量并将它们放在某个位置.

这里是代码,首先我有一个Stupidbug类

class StupidBug
{

public:
  int x();
  int y();

  // member initialization list
  StupidBug(GraphID_t i=-1): cellID(i) {}

  void move();
  void draw(const eco_string& canvas);
};
Run Code Online (Sandbox Code Playgroud)

带有"ref"的向量在另一个类中:

class Model: public Space
{

public:
urand u;     //random generator for positions
int tstep;   //timestep - updated each time moveBugs is called
int scale;   //no. pixels used to represent bugs
vector<ref<StupidBug> > bugs;
 addBugs(int nBugs);
void addBugs();
void moveBugs();
void draw(TCL_args args);
};
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答!

Dan*_*anh 7

停止的另一个原因 using namespace std;

这是功能模板 std::ref<T>

vector<ref<StupidBug> >无法编译,因为std::vector期望一个类型(实际上是2类型,但另一个是默认的),并且您提供了一个函数std::ref<StupidBug>


可能是你的旧项目有另一个ref模板,不知何故,当用C++ 11编译时,它选择std::ref而不是那个模板.