我想知道矢量类型定义中"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)
谢谢你的回答!
停止的另一个原因 using namespace std;
这是功能模板 std::ref<T>
vector<ref<StupidBug> >无法编译,因为std::vector期望一个类型(实际上是2类型,但另一个是默认的),并且您提供了一个函数std::ref<StupidBug>
可能是你的旧项目有另一个ref模板,不知何故,当用C++ 11编译时,它选择std::ref而不是那个模板.