从临时类型初始化非const对类型的引用

Red*_*dek 1 c++

我的班级结构如下:

Test_Camera.h:

class Test_Camera : public Camera_Interface {
public:
   Test_Camera (string const& aName);
   ...
Run Code Online (Sandbox Code Playgroud)

Test_Camera.cpp

Test_Camera::Test_Camera(string const& aName) : Camera_Interface(0, 0, 0, 0), name(aName)
Run Code Online (Sandbox Code Playgroud)

在我实例化Test_Camera对象的代码中,我有2个场景.第一个编译好,但第二个编译没有,我无法弄清楚为什么.

Test_Camera cam ("cam"); // This compiles

Test_Camera& cam ("cam"); // This does not compile
Run Code Online (Sandbox Code Playgroud)

当我尝试编译第二个例子时,我收到一个错误:

错误:从'const char*'类型的临时类型初始化非const引用到类型'Test_Camera&'的无效

我也尝试过:

string name = "cam";
Test_Camera& cam (name); //does not compile
Run Code Online (Sandbox Code Playgroud)

mas*_*oud 6

引用应该引用现有对象:

Test_Camera cam ("cam");
Test_Camera &cam_ref = cam;
Run Code Online (Sandbox Code Playgroud)

  • @Redek:因为那是一个函数原型.编译器假定`cam()`是返回`Test_Camera&`的函数. (3认同)