private メンバ変数への他のインスタンスからのアクセス(C++)
// private メンバ変数に対して、他のインスタンスから
// アクセス可能なことを実感するための C++ サンプルコードです
#include <iostream>
class object_
{
private:
int member_count;
public:
object_();
virtual ~object_();
virtual void up(object_* object);
virtual void down(object_* object);
virtual void print();
};
object_::object_()
{
member_count = 0;
}
object_::~object_()
{
}
void object_::up(object_* object)
{
++(object->member_count);
}
void object_::down(object_* object)
{
--(object->member_count);
}
void object_::print()
{
std::cout << "(" << member_count << ")";
}
void print(object_** obj)
{
for (int i = 0; NULL != obj[i]; ++i){
std::cout << "[obj_" << i << " value] ";
obj[i]->print();
std::cout << std::endl;
}
}
int main(int argc, char* argv[])
{
object_ obj_0;
object_ obj_1;
object_* p[] = { &obj_0, &obj_1, NULL };
obj_0.up(&obj_0);
print(p);
obj_0.up(&obj_1);
print(p);
obj_1.up(&obj_0);
print(p);
obj_1.up(&obj_1);
print(p);
obj_0.down(&obj_0);
print(p);
obj_0.down(&obj_1);
print(p);
obj_1.down(&obj_0);
print(p);
obj_1.down(&obj_1);
print(p);
return 0;
}