基于MFC的程序。大概意思是:我定义了一个类A,然后定义一个数组CArray存放A类对象,假如现在已经添加了2个对象a1,a2,现在想将a1,a2调换顺序,我弄了半天,最后用SetAt()才搞定,帮帮忙看看下面的方法为什么不对。class A
{
int x,y;
}
CArray<A,A> *m_array = new CArray<A,A>;
m_array->Add(a1); m_array->Add(a2);////////////////
class temp_swap;
temp_swap = m_array->GetAt(0);
m_array->GetAt(0) = m_array->GetAt(1);
m_array->GetAt(1) = temp_swap;
//结果顺序还是a1,a2。
我在A类里面加了重载操作符=函数,仍然不对:
A& A::operator(A &temp_a)
{
this->x = temp_a.x;
this->y = temp_a.y;
return *this;
}//结果还是原来的顺序最后用SetAt()才搞定,上面的方法错在哪里,是不是指针问题啊?我指针学的不好。请指教,谢谢了。
{
int x,y;
}
CArray<A,A> *m_array = new CArray<A,A>;
m_array->Add(a1); m_array->Add(a2);////////////////
class temp_swap;
temp_swap = m_array->GetAt(0);
m_array->GetAt(0) = m_array->GetAt(1);
m_array->GetAt(1) = temp_swap;
//结果顺序还是a1,a2。
我在A类里面加了重载操作符=函数,仍然不对:
A& A::operator(A &temp_a)
{
this->x = temp_a.x;
this->y = temp_a.y;
return *this;
}//结果还是原来的顺序最后用SetAt()才搞定,上面的方法错在哪里,是不是指针问题啊?我指针学的不好。请指教,谢谢了。
解决方案 »
- InstallShield2008修改界面的问题,求is高手帮忙
- 金山词霸的单词是怎么存放的喃??
- 用Adodc向access表中插入数据时提示“对象关闭时,操作不被允许”,但数据却已经插入数据库了,这是为什么呀?
- 请问各位高手,DLL报"i386\chkdsp.c line:42"错误,怎么解决?急等!
- CInternetSession::OpenURL函数返回什么类型的值?
- 我在剪切板格式中找到html的一种格式。里面的中文好象都是用unicode的,知道怎么转化成AnsiString的
- TO:riolee(随风) 关于directshow的
- MFC动态创建自定义控件问题
- 菜鸟问题:如何获取BS_AUTOCHECKBOX风格的按钮的选中状态
- 求助,MFC图表控件,求大神
- 【求助】First-chance exception
- 如何操作WORD文档里面图表对应的数据
m_array->GetAt(0)是返回一个值存在临时变量中,你把临时变量的值又附值了,所以对原来的存储区并没有改变
CArray<A*,A*> *m_array = new CArray<A,A>;
a1=new A; a2=new A;
m_array->Add(a1); m_array->Add(a2);////////////////
class temp_swap;
temp_swap = m_array->GetAt(0);
m_array->GetAt(0) = m_array->GetAt(1);
m_array->GetAt(1) = temp_swap;
我没有调试 就是这么个意思 里面放指针。
{
public:
A()
{
x = 0;
y = 0;
}
A(int xx, int yy)
{
x = xx;
y = yy;
}
int GetX() const
{
return x;
}
int GetY() const
{
return y;
}
private:
int x;
int y;
};
A a1(10, 10);
A a2(11, 11); CArray<A,A> *m_array = new CArray<A, A>;
m_array->Add(a1); m_array->Add(a2); A temp = m_array->GetAt(0);
m_array->GetAt(0) = m_array->GetAt(1);
m_array->GetAt(1) = temp; CString str;
str.Format(_T("%d-%d, %d-%d"), m_array->GetAt(0).GetX(), m_array->GetAt(0).GetY(), m_array->GetAt(1).GetX(), m_array->GetAt(1).GetY());
AfxMessageBox(str); delete m_array;
m_array = NULL;