作者neo6362 (neo)
看板C_and_CPP
標題[問題] 運算子=的多載
時間Thu Apr 23 15:06:46 2009
程式碼如下:
#include <iostream>
using namespace std;
class CWin
{
private:
char id,*title;
public:
CWin(char i='D',char *text="Default window"):id(i)
{
title=new char[50];
strcpy(title,text);
}
void set_data(char i,char *text)
{
id=i;
strcpy(title,text);
}
void show(void)
{
cout << "Window " << id << ": " << title << endl;
}
~CWin()
{
delete [] title;
}
CWin(const CWin &win)
{
id=win.id;
strcpy(title,win.title);
}
void copy_id(CWin &win)
{
id=win.id;
}
void copy_title(CWin &win)
{
strcpy(this->title,win.title);
}
};
void operator=(CWin &win1,CWin &win2)
{
win1.copy_id(win2);
win1.copy_title(win2);
}
int main(void)
{
CWin win1('A',"Main window");
CWin win2;
win1.show();
win2.show();
win1=win2;
win1.show();
win2.show();
return 0;
}
我把operator=()函數寫成一般函數
但是出現錯誤訊息入下:
error C2801: 'operator =' must be a <Unknown> member
請問是哪裡有問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.69.46.188
1F:推 legendmtg:沒宣告friend 04/23 15:19
2F:→ neo6362:可是我是要寫成一般函數 所以沒用friend 04/23 15:30
3F:→ MOONRAKER:那意思便是不能這樣寫。 04/23 15:48
4F:推 legendmtg:要不就friend要不就member... 04/23 16:00
5F:推 legendmtg:講一講一直覺得不對...operator=要是member.... 04/23 19:01
6F:→ sunneo:我想你要的是 CWin& operator=(const CWin& win2); 04/23 23:36
7F:→ sunneo:如果不是friend 對於物件的assign 沒有兩個參數的吧 04/23 23:37
8F:→ sunneo:就程式來說 兩個都是CWin, 也沒什麼必要變成friend了 04/23 23:38