2013-08-27 91 views
1

我有一類不可用,錯誤C2582: '運算符=' 功能是

class Points 
{ 
public: 
Points(); 
} 

和另一個

class OtherPoints : public Points 
{ 
public: 
OtherPoints(); 

Points myPoints; 
} 

現在OtherPoints()構造函數我想創建一個Point變量一樣,

OtherPoints::OtherPoints(){ 
    myPoints=Points(); 
} 

並得到錯誤,

錯誤C2582: '運算符=' 功能是不可用 '點'

+3

默認的賦值運算符應該可用。這是完整的代碼嗎?順便說一句,你在類定義的末尾缺少';'。 – Mahesh

+4

修復缺少';'(有兩個),[這個編譯好](http://ideone.com/Re94lt)。可以發佈*真實*代碼?一個[SSCCE](http://www.sscce.org)真的會有所幫助。而FYI,分配操作本身是無用的。你的'myPoints'已經非常多了。 – WhozCraig

回答

2

我不認爲myPoints=Points();需要;

Points myPoints; // This code has already called the constructor (Points();) 
0

這裏是我編譯的代碼,它的編制很細,

#include<iostream> 
using namespace std; 
class points{ 
    public: points(){cout<<"constructor points called"<<endl;} 
      virtual ~points(){cout<<"destructor points called"<<endl;} 
}; 
class otherpoints: public points{ 
        points x1; 
    public: otherpoints(){cout<<"constructor otherpoints called"<<endl;x1=points();} 
      ~otherpoints(){cout<<"destructor otherpoints called"<<endl;} 
}; 
int main(int argc, char *argv[]) 
{ 
    otherpoints y1=otherpoints();   
    return 0; 
} 

和輸出是,

構造點稱爲

構造點稱爲

構造函數其他點調用ED

構造點稱爲

析構函數點稱爲

析構函數otherpoints稱爲

析構函數點稱爲

稱爲

析點我沒有得到任何分配錯誤。

注意:每當你進行繼承時,都要將基類析構函數作爲虛函數。