bugs; 其中“StupidBug”是一个类。 它不能在 gcc-6ren">
gpt4 book ai didi

C++ vector 关键字 "ref"

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:19 25 4
gpt4 key购买 nike

我想知道 vector 类型定义中“ref”的含义是什么。

我是 C++ 的新手,在我找到的一段代码中剥离出来学习

vector<ref<StupidBug> > bugs;

其中“StupidBug”是一个类。

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

这让我很困惑,我不知道哪里出了问题。

代码有几年了,会不会写的不好? “ref”是否属于 c++?

那是多 vector 吗?还是模板?

背景资料:

整体是关于在网格中插入和移动“ bug ”, vector 保存 bug 的数量并将它们放在某个位置。

这是代码,首先我有一个 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);
};

带有“ref”的 vector 在另一个类中:

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);
};

感谢您的回答!

最佳答案

又一个停止的理由using namespace std;

是函数模板 std::ref<T>

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


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

关于C++ vector 关键字 "ref",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40648011/

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