ポインターの配列に問題があります。Cというカスタム クラスがあります。C には変数double c1があります。カスタム作成された並べ替えアルゴリズムを使用して、C の配列を c1 で並べ替える必要があります。オブジェクトを配列で移動する必要があるため、ポインターをオブジェクトに移動するだけの方がはるかに効率的であると推測しているため、オブジェクトの配列ではなく、オブジェクトへのポインターの配列を使用する必要があります。
そのように配列を初期化しました:
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' の左側は、class/struct/union/generic 型を指している必要があります
私は 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)
したがって、2 番目の呼び出しは正しくありませんでした。ご協力ありがとうございました