というのも弾クラスとプレイヤークラスがあり、
これらのクラスのプライベートメンバ変数に弾の位置、プレイヤーの位置を保持してます
そこで、クラスAとクラスBとにわけて
合計値が3で割り切れたら削除するというプログラムを組みましたが
ソースで表すと以下のようになります
クラスのプライベートな変数へのアクセスを外部に公開してもいいのかと悩んでます
friendクラスを使うか、継承を使うかなど、どのような方法がベストでしょうか?
#include <iostream>
#include <vector>
using namespace std;
class A
{
vector<int> m_a;
public:
vector<int>::iterator GetBegin() { return m_a.begin(); }
vector<int>::iterator GetEnd() { return m_a.end(); }
vector<int>::iterator Erase( vector<int>::iterator e ) { return m_a.erase(e); }
void Init();
};
void A::Init() {
int i;
for( i=0; i<10; i++ )
m_a.push_back(i);
}
class B
{
vector<int> m_b;
public:
vector<int>::iterator GetBegin() { return m_b.begin(); }
vector<int>::iterator GetEnd() { return m_b.end(); }
vector<int>::iterator Erase( vector<int>::iterator e ) { return m_b.erase(e); }
void Init();
};
void B::Init() {
int i;
for( i=0; i<10; i++ )
m_b.push_back(i);
}
int main()
{
A a;
B b;
a.Init();
b.Init();
vector<int>::iterator pa = a.GetBegin();
vector<int>::iterator pb = b.GetBegin();
while( pa != a.GetEnd() )
{
while( pb != b.GetEnd() )
{
int sum;
sum = *pa + *pb;
if( sum % 3 == 0 )
{
printf( "%d + %d = %d(/3==0)\n", *pa, *pb, sum );
pa = a.Erase(pa);
pb = b.Erase(pb);
}
else
pb++;
}
pa++;
}
printf( "--- A::m_a ---\n" );
pa = a.GetBegin();
while( pa != a.GetEnd() ) {
printf( "%d\n", *pa );
pa++;
}
printf( "--- B::m_b ---\n" );
pb = b.GetBegin();
while( pb != b.GetEnd() ) {
printf( "%d\n", *pb );
pb++;
}
return 0;
}