c++ - 在模板类中通过引用传递

标签 c++ class templates parameter-passing pass-by-reference

我的基类中有一个成员函数,它通过引用接受参数:

// Base
template<class Data, class Variable_Type = double>
class Parallel_Data
{
...
void FuncA(Data& data, int& Global_ID) 
{Data_Local.push_back(data); Local_To_Global_ID.push_back(Global_ID);};
}

// Derived
class Derived: public Parallel_Data<Atom_Placed>

问题是当我尝试在派生成员函数中调用该函数时

Push_Back_This_CPU(Atom_Placed(Position_Atom), Global_ID);

出现以下错误

no known conversion for argument 1 from ‘Atom_Placed’ to ‘Atom_Placed&’

我只是想通过引用传递参数,不知道为什么要转换?

最佳答案

Atom_Placed(Position_Atom) 之类的临时对象无法绑定(bind)到非常量引用,例如参数 Atom_Place&。原因是它们是暂时的对象,现在随时都会死亡。

您可以创建一个 Atom_Placed 类型的局部变量并将其传递给函数 Push_Back_This_CPU

Atom_Placed tmp(Position_Atom);
Push_Back_This_CPU(tmp, Global_ID);

关于c++ - 在模板类中通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14508686/

相关文章:

c++ - 在 C++ 中,我们可以为每个整数创建一个类吗?

javascript - 调用父类中被重写的函数

c++ - CMake 链接库在 Docker 镜像中失败

c++ - 使用 OpenSSL 和 C++ 生成 sha256

c++ - Rust 与 C++ std::string 互操作

ios - .h 文件中的变量与 Objective-C 中的 .m 文件相对

c++ - 元组实现是否有优化的布局?

c++ - C++14 中的模板化函数参数

c++ - 管理指针 vector 和对象 vector 的模板类

c++ - 防止模板化成员函数中某些参数的隐式转换