Connecting Tech Pros Worldwide Help | Site Map

templated class

  #1  
Old March 24th, 2007, 03:45 PM
Vincent RICHOMME
Guest
 
Posts: n/a
Hi,

I would need some help to write a templated function or method.
I am developping a GUI and on one plateform I am using a listbox
(CListBox) while on the other it's a combobox(CCombobox).
Both controls derived from a the same base class CWnd like this :

class CComboBox : public CWnd
{
....
int AddString(LPCTSTR lpszString);
}

class CListBox : public CWnd
{
....
int AddString(LPCTSTR lpszItem);
}


in my dialog I would like to write a method that take a CComboBox or a
CListBox and call the AddString method.



class CMyDialog : public CDialog
{
// take a CListBox or CCombobox
template<typename TList>
int AddListEntry(Tlist& List, LPCTSTR tszText, DWORD dwItemData);


void OnInitDialog()
{
AddListEntry(m_ListCtl, "eze", 0);
}



#ifdef PLATFORM1
CCombobox m_ListCtl;
#else
CListBox m_ListCtl;
#endif
};





How can I do that ?
  #2  
Old March 24th, 2007, 04:35 PM
=?ISO-8859-1?Q?Erik_Wikstr=F6m?=
Guest
 
Posts: n/a

re: templated class


On 2007-03-24 15:40, Vincent RICHOMME wrote:
Quote:
Hi,
>
I would need some help to write a templated function or method.
I am developping a GUI and on one plateform I am using a listbox
(CListBox) while on the other it's a combobox(CCombobox).
Both controls derived from a the same base class CWnd like this :
>
class CComboBox : public CWnd
{
...
int AddString(LPCTSTR lpszString);
}
>
class CListBox : public CWnd
{
...
int AddString(LPCTSTR lpszItem);
}
>
>
in my dialog I would like to write a method that take a CComboBox or a
CListBox and call the AddString method.
>
>
>
class CMyDialog : public CDialog
{
// take a CListBox or CCombobox
template<typename TList>
int AddListEntry(Tlist& List, LPCTSTR tszText, DWORD dwItemData);
>
>
void OnInitDialog()
{
AddListEntry(m_ListCtl, "eze", 0);
}
>
>
>
#ifdef PLATFORM1
CCombobox m_ListCtl;
#else
CListBox m_ListCtl;
#endif
};
You shouldn't need any macros to do this, (though I think you can use
macros and skip the templates). What you have above looks good to me,
just implement the AddListEntry() method and you should be good to go:

template<typename TList>
int CMyDialog::AddListEntry(TList& List, LPCTSTR tszText, DWORD dwItemData)
{
List.addString(tszText);
// ...
}

--
Erik Wikström
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to get a templated class to determine template argument list on it's own? Jim Langston answers 4 May 6th, 2007 12:05 PM
Specialization of a method of a templated class __PPS__ answers 6 August 5th, 2005 07:25 PM
Inherited member name qualification for templated class Lionel B answers 4 July 23rd, 2005 04:06 AM
template member functions of a templated class Jon Wilson answers 9 July 23rd, 2005 12:31 AM
Templated class constructor question ferdinand.stefanus@gmail.com answers 2 July 23rd, 2005 12:03 AM