定义结构体如下:
typedef struct tagClassArray
{
CString classname1;
float ratio1;
CArray<CString,CString&> strArray1;
BOOL flag;
CString classname2;
float ratio2;
CArray<CString,CString&> strArray2;
}ClassArray;CArray<ClassArray,ClassArray&> clsarray;
。
for(int i=0;i<clsarray.GetSize();i++)
{
ClassArray tmp;
tmp=clsarray.GetAt(i);
//这句赋值语句报错!
。
}
于此,我也写了一个类,我猜想是结构的层层嵌套使赋值操作出现问题。(类似与浅COPY和深COPY的问题)
所以我也写了一个类(与此结构体对应),并写了 operatro=()函数的。
但还是不行,
问高手:
如果我要这样的数据结构。应该如何做。?
如何操作?
谢谢,最好有代码(如果是类的话)。
typedef struct tagClassArray
{
CString classname1;
float ratio1;
CArray<CString,CString&> strArray1;
BOOL flag;
CString classname2;
float ratio2;
CArray<CString,CString&> strArray2;
}ClassArray;CArray<ClassArray,ClassArray&> clsarray;
。
for(int i=0;i<clsarray.GetSize();i++)
{
ClassArray tmp;
tmp=clsarray.GetAt(i);
//这句赋值语句报错!
。
}
于此,我也写了一个类,我猜想是结构的层层嵌套使赋值操作出现问题。(类似与浅COPY和深COPY的问题)
所以我也写了一个类(与此结构体对应),并写了 operatro=()函数的。
但还是不行,
问高手:
如果我要这样的数据结构。应该如何做。?
如何操作?
谢谢,最好有代码(如果是类的话)。
不知你的赋值语句报错是报的什么错?
typedef struct tagClassArray
{
CString classname1;
float ratio1;
CArray<CString,CString&> strArray1;
BOOL flag;
CString classname2;
float ratio2;
CArray<CString,CString&> strArray2;
tagClassArray(){...}
tagClassArray(const tagClassArray& ca)
{
...
}
tagClassArray& operator=(const tagClassArray& ca)
{
...
return *this;
}
}ClassArray
(不过不知道里面写对没有,)反正编译时没问题,但运行时就出问题了。!
帮忙啊!
写个例子。
typedef struct tagClassArray
{
CString classname1;
float ratio1;
CArray<CString,CString&> strArray1;
BOOL flag;
CString classname2;
float ratio2;
CArray<CString,CString&> strArray2;
tagClassArray():ratio1(0),flag(TRUE),ratio2(0)
{
}
tagClassArray(const tagClassArray& ca):classname1(ca.classname1),ratio1(ca.ratio1),flag(ca.flag),ratio2(ca.ratio2),classname2(ca.classname2)
{
for(int i=0;i<ca.strArray1.GetSize();++i)
strArray1.Add(ca.strArray1.GetAt(i));
for(i=0;i<ca.strArray1.GetSize();++i)
strArray1.Add(ca.strArray1.GetAt(i));
}
tagClassArray& operator=(const tagClassArray& ca)
{
if(&ca==this)return *this;
classname1=ca.classname1;
ratio1=ca.ratio1;
flag=ca.flag;
ratio2=ca.ratio2;
classname2=ca.classname2;
strArray1.RemoveAll();
for(int i=0;i<ca.strArray1.GetSize();++i)
strArray1.Add(ca.strArray1.GetAt(i));
strArray2.RemoveAll();
for(i=0;i<ca.strArray1.GetSize();++i)
strArray1.Add(ca.strArray1.GetAt(i));
return *this;
}
}ClassArray;
声明这个变量的地方。
好象提示CArray<CString,CString&>的赋值操作函数没找到?
调试的时候没有出现那个错误了,不过CArray<CString,CString&>的值好象还是没有赋值过去。