typedef struct _A
{
int a;
int b;
}A;
typedef struct _B
{
int c;
CArray<A,A> arr_a;
}B;
typedef strcut _C
{
CArray<B,B> arr_b;
}C;
有个C对象
有个B对象
C m_c;
B m_b;
怎么把C其中的一个复制给B;m_b = m_c.GetAt(2);//不行m_b.c = m_c.GetAt(2).a;
m_b.arr_b .Copy(m_c.GetAt(2).arr_b);
也不行
{
int a;
int b;
}A;
typedef struct _B
{
int c;
CArray<A,A> arr_a;
}B;
typedef strcut _C
{
CArray<B,B> arr_b;
}C;
有个C对象
有个B对象
C m_c;
B m_b;
怎么把C其中的一个复制给B;m_b = m_c.GetAt(2);//不行m_b.c = m_c.GetAt(2).a;
m_b.arr_b .Copy(m_c.GetAt(2).arr_b);
也不行
解决方案 »
- 这样的高中题目,哥竟然做不出了。小小的惭愧一下。
- 图像几何校正(透视校正、透视变换)算法问题
- 求教
- ATLCOM问题:如何在1个classA内实例化同一个com内的另一个classB(ATL object)?
- 为什么在同一个函数内不能同时定义两个char *变量?
- SOS! 小弟我的程序要处理DWG文件,请问该怎么做???
- 如何通过API获得显示器的HDC~~~~~~~~~~~~~
- 求彩信收发的原理和开发思路,最好有源代码
- 程序员们你们是怎么锻炼的啊
- 一个矩形对象m_rect,不改变大小,怎样使它的位置改为鼠标位置(已知为point)??????
- 获取焦点
- 类的相互引用问题。新场子,请接着赐教。谢谢
一个解决的办法是,CArray中保存指针。比如CArray<B*,B*> arr_b;CArray<A*,A*> arr_a;
然后用指针获取。C m_c; B* m_b = m_c.GetAt(2);就可以了。
另一个办法就是定义拷贝构造函数了。
想对成员变量赋值的话,用.操作符:
m_c.arr_b.Add(m_b) ;
或m_b = m_c.arr_b.GetAt(1) ;//条件:B支持=操作符.
我必须全部改成CArray的实例。难道我要在结构体里面重载=?
void operator =( const B& srcB);
在使用CArray时必须要重载自定义类的赋值运算符,要不然会出错的。
m_b = m_c.arr_b.GetAt(2);
typedef struct _C
老大,我在这里错误,不是简单的语法错误阿。
我写在这里手误而已,
关键是怎么解决复制的问题。我程序里面也是struct。
typedef struct _A
{
int a;
int b;
}A;
typedef CArray<A,A> B;
typedef CArray<B,B> C;
typedef CArray<C,C> D;他们还不能通过 x =y.GetAt(i);的方式来复制
这个我真的不知道怎么重载了
typedef strcut _C
{
CArray<B,B> arr_b;
}C;里面什么也没加定义他干吗。不是在这儿添乱吗???要我
先把这个去掉。改为CArray<B,B> arr_b;
脱掉一层壳再说。哪有这么麻烦的。
然后直接操作arr_b,问题简单了三分之一。剩下的。如果
typedef struct _A
{
int a;
int b;}A;能写成
{
int a;
int b;
int c;
}A;
然后CArray<A,A> arr_a;
大不了平时c赋值为空,那么结构简单很多。平时不用不就完了吗??然后你怎么操作都行啊??怎么会这么麻烦。我不解你的结构。嵌套多了自然出问题
[email protected]
高手,我已经基本解决,剩下一个赋值不了的问题:
//dd是四层数组
dd.GetAt(0).GetAt(0).m_arr_A.GetAt(0).na =2; //编译不过
cout<<dd.GetAt(0).GetAt(0).m_arr_A.GetAt(0).na<<endl;
去掉编译不过的语句,可以正常输出
D:\test\testArray2.cpp(32) : error C2106: '=' : left operand must be l-value
不知道什么意思
cout<<(&(dd.GetAt(0).GetAt(0).m_arr_A.GetAt(0)))->na<<endl;
通过,可是值怎么改变不了