そうしたい理由というのは、現在あるクラス(class Hogeとします)をシングルトンとしているのですが、「public:」の次の行の関数のみHoge.cppを参照し、以降の行はmain.cppを参照しているようなのです。定義に移動(F12)で確認しています。そのせいで「関数定義が見つかりません」と怒られます(なのにLINL2019エラーは出ないし実行もできる謎)。

もっと謎なのが、この問題が起こるクラスと起こらないクラスがあり、クラス名は違えど全く同様の記述でも起きるときと起こらないときがありますので謎は深まるばかりです。

また、シングルトンにしているクラス名は以下のようにdefineで定義したマクロを使用するようになっています。

#define SINGLETON_CLASS(T) class T

このマクロを使用せずclass Hogeとした場合は正常に動作しました。
しかし諸事情によりこの仕様は必ずしなければならず、class Hogeと書けばよいでは済みません。というか、単にclass Tに置き換えているだけなのになぜ問題が起きたりしたりしなかったりするのかも謎です。

題目の解決策としてクラスビュー(クラスダイアグラム)を使用してみましたが、問題の箇所がクラスビューに無いので確認が出来ていません。

【今まで試した解決策と結果】
・プロジェクト丸々作り直し : 失敗
・suoファイルの削除->再生成 : 失敗
・関数の順番を変える : 失敗(結局public:次行のみ正常動作)
・クラス名を変える : 失敗

上記諸々の事情があり、題目に至った次第です。
よろしくお願いいたします。


@sayuri さん「現象が再現する範囲で可能な限り簡素化したコードを提示してもらえませんか」に対するコード提示

//Hoge.h
#define DEFINETEST(T) class T
DEFINETEST(Hoge)
{
    template <typename T>
    class HogeTemplate
    {
        //略
    };
public:
    void TestFunc1();//この行は正常に関数定義を見る
    void TestFunc2();//この行以降では関数定義を見つけられない
};
//Hoge.cppはTestFunc1とTestFunc2関数しかないものとする