//: C03:Debug1.cpp
// A class with a dump() function
#include <iostream>
using namespace std;
class Debuggable {
int counter; // Some sort of internal counter
float a, b; // Data the user is aware of
public:
Debuggable(float x = 0.0, float y = 0.0) {
a = x; b = y; counter = 2;
}
void set_a(float x) { a = x; counter++; }
float read_a() { return a; counter++; }
void set_b(float y) { b = y; counter++; }
float read_b() { counter++; return b; }
void dump(char * msg = "") {
cout << msg << ":" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "counter = " << counter << endl;
}
};
int main() {
Debuggable U, V(3.14), W(1.1,2.2);
U.set_a(99);
U.dump("After 1 set_a");
U.read_b();
U.dump("After 1 read_b");
// Other operations ...
V.dump("V");
W.dump(); // string argument is optional
} ///:~