というのも弾クラスとプレイヤークラスがあり、
これらのクラスのプライベートメンバ変数に弾の位置、プレイヤーの位置を保持してます
そこで、クラス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; }