>>779
いくつか方法があるが、そのような目的では通常、namespace は使ってはいけない。

方法1:それらの関数を、あるクラスのメンバ関数にする。受け渡しのデータの型は、
    関数宣言などの「インターフェース」には影響しなくできる。

方法2: struct TInfo {・・・}; というような構造体を宣言し、その中に、見せたくないデータを入れておき、
    void a( TInfo *pInfo ); void b( TInfo *pInfo ); とする。TInfo は、

struct TInfo {
 DWORD m_type; // 種類を区別する何らかの数値。
 union {
  TYPE1 m_dat1;
  TYPE2 m_dat2;
  TYPE3 m_dat3;
 }
};
のようにして、m_type の値に応じて、union 型のどのデータを使うかを場合分けする。
TYPE1, ・・・, TYPE3 は、通常、何らかの struct 型にし、好きなデータをそこに入れる。