[語法] 當STL存一個template class的做法

看板C_and_CPP作者 (楊伯)時間15年前 (2010/05/06 23:11), 編輯推噓4(405)
留言9則, 4人參與, 最新討論串1/1
小弟最近開始練習template,不過今天遇到一個問題。 請問,當我有一個class像這個樣子。 template<typename T> class A { private: T m_pParent; public: void show() { m_pParent->show(); } void set( T i_pParent ) { m_pParent = i_pParent; } }; 而我現在要用vector或是list等類的容器來裝上面的class 那我應該要怎麼宣告這個vector或是list呢? --------以下補充-------- 我把我練習的整個都貼出來好了。 class show_char { private: char* m_char; public: show_char(char* i_char) :m_char ( i_char ) {} ~show_char(); void show() { printf( "%s\n", m_char ); } }; class show_int { private: int m_int; public: show_int( int i_int ) :m_int ( i_int ) {} ~show_int(); void show() { printf( "%d\n", m_int ); } }; int _tmain(int argc, _TCHAR* argv[]) { show_char* pointer_char = new show_char( "ABC" ); show_int* pointer_int = new show_int( 10 ); A<show_char*> Template_char; Template_char.set( pointer_char ); Template_char.show(); A<show_int*> Template_int; Template_int.set( pointer_int ); Template_int.show(); return 0; } 我現在想要使用STL把這些宣告出來的A全部裝起來, 或是自己寫一個新的class來存這些東西,但是我卻 不知道STL容器要怎麼宣告才能裝下這些不一樣type 的A class -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.128.56

05/06 23:16, , 1F
vector <A> 變數名稱; 這樣就可以了吧?
05/06 23:16, 1F

05/06 23:17, , 2F
還是vector < A <T> > ...
05/06 23:17, 2F

05/06 23:23, , 3F
vector< A<type> > 這樣吧
05/06 23:23, 3F
※ 編輯: yan04870449 來自: 122.117.128.56 (05/06 23:26)

05/06 23:34, , 4F
我記得vector要有寫copy還assign才能放進去
05/06 23:34, 4F

05/08 00:51, , 5F
但是template化的class不是不同型別嗎?
05/08 00:51, 5F

05/08 00:52, , 6F
那怎麼放入相同容器的vector<T>內?(T = A<show_int*>)
05/08 00:52, 6F

05/08 00:52, , 7F
可是卻放入A<show_char*>
05/08 00:52, 7F

05/08 01:30, , 8F
把show_char和show_int的共通介面抽出來做個super class?
05/08 01:30, 8F

05/08 01:31, , 9F
用多型的方式應該可以達到這個效果...不知實際上如何
05/08 01:31, 9F
文章代碼(AID): #1BujmV1W (C_and_CPP)