/*
CS371p: Quiz #21 (5 pts)
*/
/* -----------------------------------------------------------------------
1. Define class A such that the following program works.
(4 pts)
*/
#include <cassert> // assert
class A {
friend void f (A& r) {
++r._i;}
private:
int _i;
public:
A (int i) :
_i (i)
{}
static void g (A& r) {
++r._i;}
operator int () {
return _i;}
void h () {
++_i;}};
int main () {
A x(2);
assert(x == 2);
f(x);
assert(x == 3);
A::g(x);
assert(x == 4);
x.h();
assert(x == 5);
return 0;}
syntax highlighted by Code2HTML, v. 0.9.1