2013-04-17 104 views
1
类型的键入

我的类结构如下:的非const引用无效初始化成从临时

Test_Camera.h:

class Test_Camera : public Camera_Interface { 
public: 
    Test_Camera (string const& aName); 
    ... 

Test_Camera.cpp

Test_Camera::Test_Camera(string const& aName) : Camera_Interface(0, 0, 0, 0), name(aName) 

在我的代码实例化一个Test_Camera对象我有2个场景。第一个编译好,但第二个没有,我不明白为什么。

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

Test_Camera& cam ("cam"); // This does not compile 

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

error: invalid initialization of non-const reference to type 'Test_Camera&' from a temporary of type 'const char*'

我也试过:

string name = "cam"; 
Test_Camera& cam (name); //does not compile 
+0

对于[ints](http:// ideone),您会得到相同的错误消息.com/Dlpinm) – Default

回答

6

参考文献应参照现有对象:

Test_Camera cam ("cam"); 
Test_Camera &cam_ref = cam; 
+0

为什么当我做'Test_Camera&cam();'这个编译? – Redek

+3

@Redek:因为这是一个函数原型。编译器假定'cam()'是返回'Test_Camera&'的函数。 –

+0

@phresnel谢谢,那就是我的困惑所在。我认为它调用了无参数的构造函数。现在更有意义! – Redek

相关问题