我有以下的底座和继承的类:为什么指针的这个引用是右值?
// Abstract base class Manager.
class Manager
{
public:
Manager(Task*& _task);
protected:
// Reference of a pointer to the current task.
Task*& task;
};
// Abstract base class Task.
class Task
{
virtual task_rcodes_t run() = 0;
protected:
uint8_t task_id;
};
// Still abstract class Special_Task.
class Special_Task : public Task
{
public:
Special_Task();
};
// Class Special_Manager.
class Special_Manager : public Manager
{
public:
Special_Manager();
protected:
// Pointer to the current special task.
Special_Task* task;
};
的想法是让任务指针,以检测没有当前任务运行是0。为了对Task和Special_Task指针有共同的访问权限,它们通过引用传递给指针。
为什么我收到错误信息: “的类型的非const引用无效初始化‘任务 &’从类型‘Special_Task *’的右值” 结合: “符号“经理“无法解析”
为Special_Manager的构造:
// Constructor Manager
Manager::Manager(Task*& _task) : task (_task)
{}
// Constructor Special_Manager
Special_Manager::Special_Manager() : Manager(task), task (0)
{}
由于Special_Task *任务是正常的(指针)VARI能够,我不明白为什么它被认为是一个右值?
谢谢!
因为它不是左值,因为你不能分配给引用。 – EJP
什么是'Special_Manager();'类'Manager_Special'内部? –
这就是构造函数。我更正了班级名称中的打字错误。 – nubert