2014-01-17 59 views
0

這是我的代碼的一部分....
//samlple.h ........拷貝構造函數+賦值操作符

class Manager{    
public:             
    Manager(cmd::Processor *cp);      
    virtual ~Manager(void);         
protected:          
    cmd::Processor *m_Processor;          

};   

//samlple.cpp .... ....

//Default constructor     

Manager::Manager(    
    cmd::Processor *cp   
) : m_commandProcessor(cp)     
    {    
    g_MgrCommand = new MgrCommand(this);     
}   

運行在這之後我收到以下警告:
sample.cpp的(97):信息1732:新構造中的類「經理」,這沒有賦值運算符.... ...

我是新來的C++編碼...
你能告訴我,我怎麼能寫拷貝構造函數和賦值運算符爲我的課以消除此警告

+0

規則三(或五) – PlasmaHH

回答

0

你可以聲明operator=成員函數:

Manager& Manager::operator=(const Manager&) { 
    // ... 
    return (*this); 
} 

當然,函數的第一個參數可以是任何你想要的。

+0

我可以在哪裏寫上述聲明:在公共區域還是保護區? – Ashwin

+0

@Ashwin,公開。 – Shoe

0

您不必執行copy c'tor/assignment。

問題是,除非您自己實現它們,否則編譯器會通過成員智能副本自動實現它。在你的具體情況下,這個自動生成的代碼將是不正確的,因爲你將有幾個對象指向相同的分配MgrCommand

您應該正確地實現c'tor /賦值運算符(可能通過分配的MgrCommand中的每個對象單獨的實例),或者禁用他們。

+0

我在代碼中也有這個警告:信息1733:新的構造函數類'經理'沒有複製構造函數 – Ashwin

相關問題