2013-08-03 43 views
-1

具有以下程序:如何分配給一個變量沒有賦值運算符的值

#include <iostream> 
using namespace std; 

class Base 
{ 
public: 
    int f; 
virtual void assign(){ 
    f = 7; 
} 
}; 

class Hijo: public Base 
{ 
public: 
    void assign() 
    { 
    //Insert solution here  
    } 
}; 

int main(){ 
    Hijo h; 
    h.assign(); 
    printf("%d",h.f); 
    return 0; 
} 

在註釋「//插入這裏的解決方案」,一個行指令應包括分配F的值沒有使用賦值操作符(++,+ =,=,...)

編輯:我複製代碼時出錯。兩地都是7。

回答

3

你應該寫Base::assign();

+0

雖然我同意這可能是原來的測驗設置者所期望的解決方案,但我不明白爲什麼不只是刪除'hijo :: assign'函數,而是讓編譯器調用'Base :: assign'而沒有第一個地方的第二個功能? –

0

如果它應該在這兩種情況下7,那麼這將做到:

class Hijo: public Base 
{ 
    public: 
    void assign() 
    { 
    Base::assign(); 
    } 
}; 
+0

...然後'f'結束了'5',而不是'7'。 – Jashaszun

+0

哦,我沒有看到'7'...他把'5'改成了'7';)......呃.. – lapk

+0

對不起,這是我的錯。我編輯了這篇文章。 – Oni

1

如何:

void assign() 
{ 
    int seven(7); memcpy(&f, &seven, sizeof(seven)); 
} 

這顯然是一個完全無用的鍛鍊做到這一點,也不是很乾淨。但我認爲它符合任務的標準。

+0

當然...給我一個理由來刪除我的答案;) –

+0

你的答案與我的tho非常不同......;) –

+0

它應該在一行中。無論如何,謝謝:) – Oni