I forgot that I was accessing x publicly instead of calling the appropriate functions to set it ... which undermined the whole proof.

This commit is contained in:
David Vereb 2017-05-23 17:04:35 -04:00
parent 964db120ff
commit 4daea58b69
3 changed files with 6 additions and 21 deletions

8
Ball.h
View File

@ -12,14 +12,16 @@ public:
instance_num = ++instance_counter; instance_num = ++instance_counter;
// NOTE(dev): don't go above 100, please, for the sake of the example. // NOTE(dev): don't go above 100, please, for the sake of the example.
} }
void GetXFromPhysicsSimulation() int GetXFromPhysicsSimulation()
{ {
x = instance_num + ((rand() % 10) * 100); // move around by ten, but keep single digit // NOTE(dev): move around by 100 to show that the number is different each time,
// but keep the instance number to show you're on the same one.
return instance_num + ((rand() % 10) * 100);
} }
static void SetX(int &x, void *instance) static void SetX(int &x, void *instance)
{ {
Ball *ball = static_cast<Ball*>(instance); Ball *ball = static_cast<Ball*>(instance);
ball->GetXFromPhysicsSimulation(); x = ball->GetXFromPhysicsSimulation();
return; return;
} }

View File

@ -25,10 +25,9 @@ public:
callback(x, user_data); callback(x, user_data);
return x; // either this was just set by callback, or it was always set by constructor. return x; // either this was just set by callback, or it was always set by constructor.
} }
//private: private:
int x; int x;
void *user_data; void *user_data;
private:
void (*callback)(int&, void*); void (*callback)(int&, void*);
}; };

View File

@ -1,16 +0,0 @@
#ifndef PHYSICSOBJECT_H
#define PHYSICSOBJECT_H
#include "IPhysics.h"
class PhysicsObject
: public IPhysics
{
public:
PhysicsObject() : IPhysics(&x) {}
int GetX() { Update(); return x; }
private:
int x;
};
#endif