pとqは違うクラスです、とか、もう無茶苦茶
何考えてんだか…

だったらC++と言わず
char *p;
long *q;
でもいいわけでね…