非常に単純な質問です。ヒープ内に存在する構造体のデータにアクセスするにはどうすればよいですか?
追加情報:: 「A」というクラスと、このクラス内に「B」という構造体があります。作成されるすべての「B」はヒープ上に存在します。クラス "A" は、プライベート データ メンバーとして "B" のベクトルを持つことを意図しています (つまり、クラス "A" は多くの "B" を保持できます)。「A」が持つベクターに「B」の別の新しいインスタンスを追加するクラス「A」のメソッドがあります。クラス「A」には、「B」インスタンスのベクトルにあるすべての要素を更新する別のメソッドもあります。私の質問は次のとおりです。
構造体でゲッターとセッターを使用するにはどうすればよいですか?
役立つコードを次に示します (注: grafix.h はグラフィカル ライブラリです)。
//.h file
#pragma once
#include <vector>
#include "grafix.h"
class A
{
public:
~A();
A();
void addB();
void updateB();
private:
struct B
{
public:
~B()
{
delete p_b;
p_b = 0;
}
B()
{
p_b = new B; //I need this here
p_ball->x = 0;
p_ball->y = 0;
p_ball->r = 15;
}
void setxy(int X, int Y)
{
//What does this look like?
//This?
x = X; //?
y = Y;
}
int retx()
{
//Likewise.... ?
return x; //?
}
int rety()
{
return y;
}
void update()
{
draw();
//Movement code taken out for time being
}
private:
int x,y; //xy
int r; //radius
B* p_b; //pointer to object, do I need this?
void draw()
{
draw_circle_filled(x,y,r);
//how can I access the data within the struct B here?
//do I use the getters/setters? dereference??
}
};
vector <Ball*> bs; //Holds all of the B's that have been created
};
そして、メソッドを含む .cpp ファイル。ここで質問があります。正しい構文で入力していますか??
#include "A.h"
A::A()
{
addB();
}
void A::addB()
{
B* b;
bs.push_back(b);
}
void A::updateB()
{
for(int i = 0; i < bs.size(); i++)
{
bs[i]->update();
}
}