再发Queue class泛型类问题
我的代码如下:
#using <System.dll>
#include "CKdTree.h"
using namespace std;
using namespace System;
using namespace System::Collections;
...
Queue <CKdTreeNode> cToProcess;
cToProcess.Enqueue(m_RootNode);
编译时的错误:
1>.\CKdTree.cpp(48) : error C3225: “T”的泛型类型参数不能是“CKdTreeNode”,它必须是值类型或引用类型的句柄
1>.\CKdTree.cpp(48) : error C3225: “T”的泛型类型参数不能是“CKdTreeNode”,它必须是值类型或引用类型的句柄
对CKdTreeNode类的定义如下:
class CKdTreeNode
{
public:
CKdTreeNode();
CKdTreeNode(int* nIndex_);
CKdTreeNode(int* nIndex_, int nIndexSize_);
~CKdTreeNode();
bool GetTerminal() {return m_Terminal;};
int* GetIndex() {return m_Index;};
int GetSpcIndex(int nIndexNum_) {return m_Index[nIndexNum_];};
void SetIndex(int* nIndex_) {m_Index = nIndex_;};
int GetIndexSize() {return m_IndexSize;};
void SetIndexSize(int nIndexSize_) {m_IndexSize = nIndexSize_;};
int GetDim() {return m_Dim;};
void SetDim(int nDim_) {m_Dim = nDim_;};
double GetValue() {return m_Value;};
void SetValue(double dVal_) {m_Value = dVal_;};
CKdTreeNode* GetLeftBranch() {return m_LeftBranch;};
CKdTreeNode* GetRightBranch() {return m_RightBranch;};
void MakeNonTerminal(int nDim_, double dVal_, CKdTreeNode* cLeftBranch_, CKdTreeNode* cRightBranch);
protected:
private:
bool m_Terminal;
int* m_Index;
int m_IndexSize;
int m_Dim;
double m_Value;
CKdTreeNode* m_LeftBranch;
CKdTreeNode* m_RightBranch;
};
请问我应该如何修改代码,谢谢了!!