Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

new operator請教一下...

0 views
Skip to first unread message

我在睡前尿尿...

unread,
Nov 28, 1996, 3:00:00 AM11/28/96
to

� 這個程式如果run的話會出現這個程式的執行作業無效...
但是把它的constructor跟destructor給mark起來就不會出錯了,
到底一個class甚麼時後要new啊,是不是在做指標的class都要new啊???
#include <iostream.h>
class EmpInfo {

public:
// constructor and destructor
EmpInfo() {}
~EmpInfo() {}

public:
virtual void SetCountry(char* test) {cout <<"test";};
};
class OffshoreEmpInfo : public EmpInfo {
public:
char *m_country;
virtual void SetCountry(char* country)
{ m_country = country; }
};
int main()
{
OffshoreEmpInfo empInfo;
EmpInfo* test[1];//=new EmpInfo;
test[1]=&empInfo;
test[1]->SetCountry("Taiwan");
cout <<empInfo.m_country;
return 0;
}

謝謝了.......


--
[m [1;33m※ 來源:‧臺北技術學院紅樓資訊站 redbbs.cc.tit.edu.tw‧[FROM: 140.124.70.160] [m

四眼的王蟲

unread,
Nov 29, 1996, 3:00:00 AM11/29/96
to

nelso...@redbbs.cc.tit.edu.tw (§ÚĶbšÎŦe§ŋ§ŋ...) wrote:


> ģo­Óĩ{ĶĄĶpŠGrunŠšļÜ·|ĨXē{ģo­Óĩ{ĶĄŠš°õĶæ§@·~ĩLŪÄ...
> ĶýŽO§âĨĶŠšconstructorļōdestructorĩđmark°_ĻÓīNĪĢ·|ĨXŋųĪF,
> ĻėĐģĪ@­ÓclassŽÆŧōŪÉŦá­nnew°Ú,ŽOĪĢŽOĶb°ĩŦüžÐŠšclassģĢ­nnew°Ú???


>#include <iostream.h>
>class EmpInfo {
>
>public:
> // constructor and destructor
> EmpInfo() {}
> ~EmpInfo() {}
>
>public:
> virtual void SetCountry(char* test) {cout <<"test";};
>};
>class OffshoreEmpInfo : public EmpInfo {
>public:
> char *m_country;
> virtual void SetCountry(char* country)
> { m_country = country; }
> };
>int main()
>{
> OffshoreEmpInfo empInfo;
> EmpInfo* test[1];//=new EmpInfo;
> test[1]=&empInfo;
> test[1]->SetCountry("Taiwan");
> cout <<empInfo.m_country;
> return 0;
>}
>

test ŠšĪjĪpĨuĶģ 1, Ķ]Ķđ°ßĪ@ĶXŠkŠš ĨuĶģ test[0],
Ķý§AŦoĨÎ test[1] Ī~ģyĶĻŋųŧ~.

Ĩ|ēīŠšĪýÂÎ

--
ĨÍĐRŽOĶbķ·tĪΰ{Ã{ŠšĨú

sw

unread,
Nov 29, 1996, 3:00:00 AM11/29/96
to

==> 在 nelso...@redbbs.cc.tit (我在睡前尿尿...) 的文章中提到:
> �> 這個程式如果run的話會出現這個程式的執行作業無效...
> 但是把它的constructor跟destructor給mark起來就不會出錯了,
> 到底一個class甚麼時後要new啊,是不是在做指標的class都要new啊???
> int main()
> {
> OffshoreEmpInfo empInfo;
> EmpInfo* test[1];//=new EmpInfo; (1)
> test[1]=&empInfo; (2)
> test[1]->SetCountry("Taiwan"); (3)
> cout <<empInfo.m_country;
> return 0;
> }

首先我很懷疑錯誤是 constructor 和 destructor 所造成的,
或許是和你的程式內容有關.
在(1)這行:
既然你陣列只有一個元素, 那為何要宣告成陣列呢?
或許可以寫成:
EmpInfo *test;
對於陣列元素的設值也不是用你所mark掉的方式,
應該是 EmoInfo *test[2]={ new EmpInfo,new EmpInfo };
我想這樣或許就可以完成設值的目的了.
在(2)(3)這兩行:
你的陣列索引值好像超過範圍了.
若你的陣列只有一個元素的大小的話,
那第一個元素的索引值該是 0 才對,
你可以試著將這兩行改為:
test[0]=&empInfo;
test[0]->SetCountry("Taiwan");

--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

0 new messages