我有以下的底座和繼承的類:爲什麼指針的這個引用是右值?
// 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