我的基类中有一个成员函数,它通过引用接受参数:
// 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/