大家好:我有个语法方面的问题:
我先建了个复数类:
class CComplex
{
public:
CComplex(double r=0, double i=0) { m_real = r; m_imag = i; }
CComplex operator -(const CComplex &c);{
return CComplex(m_real - c.m_real, m_imag - c.m_imag);
}
...// 节省篇幅,省略其它
protected:
double m_real;//实部 double m_imag; // 虚部
};
又用MFC的CArray,定义了
CArray<CComplex, CComplex> m_CComAry[Dimension];
CArray<CComplex, CComplex> m_CodeBook[Dimension];
以及函数:double Square(CComplex &dIn) { return dIn.FindAbs2(); }然而,下面一句话在链接时报错:
Square(m_CComAry[i][j]-m_CodeBook[i][j]); // i是CArray这个模板类的下标,j是我在上面定义模板数组的下标.
谢谢各位!
我先建了个复数类:
class CComplex
{
public:
CComplex(double r=0, double i=0) { m_real = r; m_imag = i; }
CComplex operator -(const CComplex &c);{
return CComplex(m_real - c.m_real, m_imag - c.m_imag);
}
...// 节省篇幅,省略其它
protected:
double m_real;//实部 double m_imag; // 虚部
};
又用MFC的CArray,定义了
CArray<CComplex, CComplex> m_CComAry[Dimension];
CArray<CComplex, CComplex> m_CodeBook[Dimension];
以及函数:double Square(CComplex &dIn) { return dIn.FindAbs2(); }然而,下面一句话在链接时报错:
Square(m_CComAry[i][j]-m_CodeBook[i][j]); // i是CArray这个模板类的下标,j是我在上面定义模板数组的下标.
谢谢各位!
CArray <CComplex, CComplex&> m_CComAry[Dimension];
另外,你定义的是一维数组,怎么能通过二维下标来访问?
const int CodeBook_Num = 100;
for (int i = 0; i<Dimension; i++)
{
m_CComAry[i].SetSize(Max_Rand_Num);
m_CodeBook[i].SetSize(CodeBook_Num);
}
所以我用二维数组是不错的
拷贝构造函数和赋值操作符的定义请见最上面的帖子6-8行
报错如下:
VQ.obj : error LNK2001: unresolved external symbol "public: class CComplex __thiscall CComplex::operator-(class CComplex const &)" (??GCComplex@@QAE?AV0@ABV0@@Z)
Debug/NewStudy.exe : fatal error LNK1120: 1 unresolved externals
多谢各位指教!
CArray已经有数组的功能了
不知道楼主要实现啥
MSDN给我们的例子:CArray<CPoint,CPoint> myArray; 那myArray是一维的,对吧,其实它是个指针,指向一个长度待定的一维数组,我定义CArray <CComplex, CComplex> m_CComAry[Dimension]; 那么m_CComAry指向一个一维指针数组,数组的每个元素又分别是(同上)指向一维数组Ai(i=0,1,...,Dimension)的首地址的指针,所以我说m_CComAry其实就是指向A的一个二维指针,所以m_CComAry是二维数组 如果注释了带-操作符的那句话,编译就相安无事,虽然不用运算符重载也能实现功能,但我想尝试下,因为以前未学过这方面的知识。还是要感谢大家的帮助