RE: C++, unmanaged code

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Use gcroot<> instead.

"Bill S." wrote:

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;
}
};



.