all groups > dotnet clr > july 2006 >
You're in the

dotnet clr

group:

C++, unmanaged code


C++, unmanaged code Bill S.
7/6/2006 3:20:19 PM
dotnet clr:
Dear programmers, I'm experimenting with a simple unmanaged template class.
The problem is that it won't except managed types. Any suggestions?

void MyFunc()
{
//This works fine.
XStack<int>* uc = new XStack<int>();

//This doesn't work!
XStack<ManagedClass*>* uc = new XStack<ManagedClass*>();
}

//Unmanaged Class ////////////////////
template<class Type> class XStack
{
private:
typedef struct StackNode{
Type Data;
StackNode *Next;
}mNode;

bool mEmpty;
int mSize;
mNode *mHeader;

public:
XStack()
{
mEmpty = true;
mSize = 0;
mHeader = new mNode;
mHeader->Data = 0;
mHeader->Next = 0;
}

~XStack()
{
while( !mEmpty ){
Pop();
}
//delete mHeader; //?
}

bool empty() const
{
return mEmpty;
}

int size() const
{
return mSize;
}

Type Pop()
{
if( !mEmpty ){
mNode *tmp = mHeader->Next;
mHeader->Next = tmp->Next;
mEmpty = (mHeader->Next == 0);
mSize--;
Type data = tmp->Data;
//delete tmp; //?
return data;
}
}

void Push( Type data )
{
mEmpty = false;
mSize++;
mNode *tmp = new mNode;
tmp->Data = data;
tmp->Next = mHeader->Next;
mHeader->Next = tmp;
}
};

RE: C++, unmanaged code Debasish Bose, Oracle Corp
7/7/2006 3:08:01 AM
Use gcroot<> instead.

[quoted text, click to view]
AddThis Social Bookmark Button