指针数组有问题。我有一个名为C的自定义类。C 有一个变量double c1。我必须使用自定义编写的排序算法按 c1 对 Cs 数组进行排序。我猜测由于我必须在数组中移动对象,因此只移动指向对象的指针会更有效,因此我必须使用的不是对象数组,而是指向对象的指针数组。
我像这样初始化数组:
C** someC;
someC = new C*[size];
for(int i = 0; i < size; i++) {
// a and b are of type CPoint
someC[i] = new C(a,b);
}
我做这部分正确吗?正是对 C 对象的调用导致了问题:
someC[i]->a.x
给我一个错误:'->a' 的左边必须指向类/结构/联合/通用类型
我是 C++ 新手,所以我可能遗漏了一些明显的东西,但我做了一些研究,没有发现任何东西。也许我不太了解指针是如何工作的......
更新
C类的头文件:
#pragma once
class C
{
public:
CPoint a;
CPoint b;
double c1;
C(void);
C(CPoint,CPoint);
~C(void);
};
实施:
#include "StdAfx.h"
#include "C.h"
#include <math.h>
C::C(void)
{
}
C::C(CPoint a, CPoint b)
{
this->a=a;
this->b=b;
double c1_x = a.x - b.x;
double c1_y = a.y - b.y;
c1= sqrt( (c1_x * c1_x) + (c1_y * c1_y));
}
C::~C(void)
{
}
更新
问题出在我在评论中提供的代码中,我没有注意到我以错误的方式调用数组,如下所示:
pDC->MoveTo(someC[i]->a.x, someC->a.y)
所以第二次调用是不正确的。感谢大家的帮助