線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:668
推到 Plurk!
推到 Facebook!

class 內含 class

尚未結案
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-09 13:45:23 IP:218.171.xxx.xxx 未訂閱
請問用以下方式宣告的 class,要如何編寫成員函數

template
class A
{
protected:
template class Node
{
Node *p;
public:
Node(void); // Constructor
Node(Node *d); // Constructor
};
};

// 這樣定義成員函數可以成功
template
template
A::Node::Node (void)
{
p = NULL;
}


//可是這樣用 BCB5 編譯過不了關
template
template
A::Node::Node (A::Node::Node *d)
{
p = d;
}
發表人 - jackyung 於 2004/09/09 14:46:43
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-09 16:20:14 IP:218.35.xxx.xxx 未訂閱
jackyung你好:     那一行改成     
A::Node::Node (Node *d)
 
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-10 00:28:57 IP:218.171.xxx.xxx 未訂閱
真的可以耶,可是若要做為回傳值,得用不同的方式宣告,
而且編寫使用程式碼也過不了
另外貼上討論版的程式碼不能縮排,要怎麼做才行,我是先
在 FrontPage 弄好再貼上來的

template
class A
{
public:
template class Node
{
T data;
Node *p;
public:
Node(void); // Constructor
Node(Node *d); // Constructor

// Node *GetNode();
A::Node *GetNode(); // 不這麼寫過不了關
};
};

// 這樣定義成員函數可以成功
template
template
A::Node::Node (void)
{
data = 0;
p = NULL;
}

//成功了
template
template
A::Node::Node (Node *d)
{
data = 0;
p = d;
}

template
template
// Node *A::Node::GetNode ()
A::Node *A::Node::GetNode () // 不這樣寫過不了
{
return p;
}


// 使用測試
void __fastcall TForm2::Button1Click(TObject *Sender)
{
A::Node *p = new A::Node; // 成功
A::Node *p2 = new A::Node(p); // 成功
A::Node *p3 = p2->GetNode(); // 失敗
}
發表人 - jackyung 於 2004/09/10 00:33:46
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-10 01:17:58 IP:211.76.xxx.xxx 未訂閱
參考下面的碼:  
 
template     class A    {
public:      template  class Node      {        T2 data;        Node *p;      public:        Node(void); // Constructor        Node(Node *d); // Constructor            // Node *GetNode();        Node* GetNode(); // 不這麼寫過不了關      };    };    // 這樣定義成員函數可以成功    template 
template 
A::Node::Node (void)    {
  data = 0;
  p = NULL;
}        //成功了
template 
template     A::Node::Node (Node *d)    {
  data = 0;
  p = d;
}    template 
template 
A::Node* A::Node::GetNode()
{
return p;
}    void __fastcall TForm1::Button1Click(TObject *Sender)    {      A::Node *p = new A::Node;  // 成功      A::Node *p2 = new A::Node(p);  // 成功      A::Node *p3 = p2->GetNode(); // 成功    }    
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-10 23:17:29 IP:218.171.xxx.xxx 未訂閱
真的可以耶,太感謝了 
系統時間:2024-07-08 11:12:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!