最近C言語でオブジェクト指向プログラミングの練習を始めた者です
ある構造体Boxに中の変数Countがあるのですが、その値を見る関数GetCountを関数ポインタを使ってメンバ関数的に割り当てようとしています

//include省略

typedef struct Box{
int count;
int (*GetCount)(struct Box *);
} Box_t;

int Box_GetCount(Box_t* p_box){
return p_box->count;
}

Box_t* Box_New(int num){
Box_t* p_box = (Box_t *)malloc( sizeof(Box_t) );
p_box->count = num;
p_box->GetCount = &Box_GetCount;
return p_box;
}

int main()
{
Box_t* box1 = Box_New(5);
printf("%d", box1->GetCount(box1));
free(box1);
return 0;
}

このやり方ですと、構造体Boxのメンバ関数GetCount(外部関数Box_GetCountのポインタ)でメンバ変数countを読む時に
box1->GetCount(box1) と自身のポインタを渡すようになっているのですが、これをbox1->GetCount()のように引数なしでできるでしょうか?
構造体内の宣言を変えればいいのか、関数Box_Newの中身を変えればいいのか悩んでおります。ご教授頂けると幸いです