RE: function template
Hello Charles
Thanks for the reply.
I am doing exactly the same as you suggested. Here is all the code.
//class declaration
ref class CListCtrlSetup
{
public:
CListCtrlSetup(void);
template<class T> void InsColumn(T& lst, DataTable^ table);
}
and the function declaration is
template<class T>
void CListCtrlSetup::InsColumn(T& lst, System::Data::DataTable^ table)
{
try
{
DataColumnCollection^ columns = table->Columns;
DataColumn^ column;
CString str;
int i, col = columns->Count;
for(i=0; i<col; i++){
column = columns[i];
str = column->ColumnName;
lst.InsertColumn(i, str);
}
SetColWidth(lst);
}
catch(Exception^ e)
{
MessageBox::Show(e->Message, L".NET Exception Thrown",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
}
}
The class T could be of type CListCtrl or CCheckListCtrl.
//To invoke the function in CDatabaseView class
.......
sqlDb = gcnew CDatabaseConn(); //SQL Server 2005 connection class
sqlDb->Connect();
plstCtrl = gcnew CListCtrlSetup();
CListCtrl& lst = GetListCtrl();
DataTable^ table = sqlDb->suppliersTable;
plstCtrl->InsColumn(lst,table);
but still giving the same error.
error LNK2020: unresolved token (0600000F)
CListCtrlSetup::InsColumn<CListCtrl>
Cheers
Manjree
"Charles Wang[MSFT]" wrote:
Hi Manjree,
I noticed that there was no implementation of your CListCtrlSetup
constructor. Also, I did not see your invoker code snippets. Could you
please post all of them for further research?
I changed your code as following and it worked fine:
//--CListCtrlSetup.h
#pragma once
ref class CListCtrlSetup
{
public:
CListCtrlSetup(void);
template<class T> void InsColumn(T& lst, System::Data::DataTable^ table);
};
CListCtrlSetup::CListCtrlSetup()
{}
template<class T>
void CListCtrlSetup::InsColumn(T& lst, System::Data::DataTable^ table)
{
try
{
System::Data::DataColumnCollection^ columns = table->Columns;
System::Data::DataColumn^ column;
CString str;
int i, col = columns->Count;
for(i=0; i<col; i++){
column = columns[i];
str = column->ColumnName;
lst.InsertColumn(i, str);
}
//SetColWidth(lst);
}
catch(System::Exception^ e)
{
System::Windows::Forms::MessageBox::Show(e->Message, L".NET Exception
Thrown");
}
}
//invoker code snippets
#include "CListCtrlSetup.h"
......
CMyListView vv;
CListCtrl& lst = vv.GetListCtrl();
CListCtrlSetup^ s = gcnew CListCtrlSetup();
System::Data::DataTable^ t = gcnew System::Data::DataTable("test");
s->InsColumn(lst,t);
You may refer to my code snippets to see if it can help you resove this
issue. If you have any other questions or concerns, please feel free to let
me know.
Best regards,
Charles Wang
Microsoft Online Community Support
=====================================================
When responding to posts, please "Reply to Group" via
your newsreader so that others may learn and benefit
from this issue.
======================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
======================================================