#include <iostream>
using namespace std;
typedef struct Data{
int data;
void(*ShowData)(Data*);
void(*Add)(Data*, int);
} D;
void ShowData(D* THIS){ cout << "Data : " << THIS->data << endl; }
void Add(D* THIS, int num){ THIS->data += num; }
int main(){
D obj1 = { 15, ShowData, Add };
D obj2 = { 7, ShowData, Add };
obj1.Add(&obj1, 17);
obj2.Add(&obj2, 9);
obj1.ShowData(&obj1);
obj2.ShowData(&obj2);
return 0;
}
구조체를 이용해서 클래스를 흉내 낸 예제라고 책에는 적혀있는데 강조된 부분들이 뭘 뜻하는지는 모르겠습니다..
void *ShowData와 void *Add는 포인터가 포함된 함수정도로 이해할 수 있겠는데 뒤의 Data*와 (Data*, int) 이건 무슨 소린지..
밑의 (D* THIS)와 (D* THIS, int num)도 똑같이 모르겠습니다. 그래도 D는 struct Data라는 건 이해했습니다.