Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。Hogeとします)をシングルトンとしているのですが、「public:」の次の行の関数のみHoge.cppを参照し、以降の行はmain.cppを参照しているようなのです。定義に移動(F12)で確認しています。そのせいで「関数定義が見つかりません」と怒られます(なのにLINL2019エラーは出ないし実行もできる謎)。謎なのが、この問題が起こるクラスと起こらないクラスがあり、クラス名は違えど全く同様の記述でも起きるときと起こらないときがありますので謎は深まるばかりです。シングルトンにしているクラス名は以下のようにdefineで定義したマクロを使用するようになっています。Hogeとした場合は正常に動作しました。Hogeと書けばよいでは済みません。Tに置き換えているだけなのになぜ問題が起きたりしたりしなかったりするのかも謎です。題目の解決策としてクラスビュー(クラスダイアグラム)を使用してみましたが、問題の箇所がクラスビューに無いので確認が出来ていません。上記諸々の事情があり、題目に至った次第です。個の銅バッジ【補足】もっと細かく言うと、cppに記述している関数が参照しているヘッダーを変更することが出来るかどうか知りたいです。上記のようになぜか一行目だけ正常で後はmain.hを参照し、しかもその現象が起きるクラスと起きないクラスがあるからです。6:13【補足2】過去、一度cpp,h両ファイル名をローワーキャメルで作成し、その後アッパーキャメルに変更していました。ローワーキャメルの時はどうだったかと再度ローワーキャメルに戻そうとすると、「この場所にはすでに同じ名前のファイルが存在します」と、存在しないのに怒られ、変更が出来ていません。6:22さん、補足2に関して、Windowsではファイル名の大文字小文字を区別しないため、ファイル名変更の実装がコピー&削除の場合に「すでに同じ名前のファイルが存在します」のエラーが発生します。質問の内容とは別件かと思います。それは存じ上げませんでした。回答欄は回答を書く場所ですから、コメント欄の代わりとして使うのは避けてください。今回の場合、sayuriさん個人へのコメントではなく質問の情報を追加すると考えれば、質問文に記載することができるかとおもいます。Tこのコーディング規約が原因と思われます。コンパイラーはソースコードを忠実に解析しますが、IDEは解析速度とのバランスを考えて一部の解析を省略します。Studio以外のエディタの使用を検討されてみてはどうでしょうか。現象を確認できました。指摘した通り、IDEが解析を端折っているだけです。{};辺りにコーディング規約を改定してください(可能であれば)。できないのであれば諦めるか他のエディタを使用するといいでしょう。Studio)のインテリセンスがエラーを報告するという質問趣旨なのでしょうか?はい。期待通りコンパイル~リンク~実行でき‌ますが、「関数定義が見つかりません」と、該当箇所に緑の波線が表示されま‌​す。短い回答:IntelliSenseは完全なC++コンパイラではありません。Studioエディタ利用を諦めてください。StudioのC++コンパイラ(cl.exe)とIntelliSenseは独立した処理系です。片方がエラーを報告してくる状況でも、もう一方では問題無いというケースが存在します。質問中コードのように複雑なマクロを展開する場合は、IntelliSenseは役に立たなくなるケースが多いと思います。お勧めはしませんが、マクロ__INTELLISENSE__を用いればIntelliSense処理中なのか、通常のC++コンパイル処理なのかを判別できます。使用しているようです。templateに対応しましたが、std::is_void_v等はインテリセンス向けにはコメントアウトしています。templateを使用するとIDE上は構文解析がぐちゃぐちゃに崩れますが、コンパイルは通るという状況になっています。省略しますが、それを排除するのが合理的であるとする理由は多数見つかります。症状についてですが、1.クラスビューもインテリセンスも同じシンボルDB(pdb)を参照していると予測できるので、同じ結果になるでしょう。2.経験上、特に#defineマクロについては「定義へ移動」等が苦手なようだという感想を持っています。同一であればどこに書いてもOKですし。等の行で右クリックし、表示されるコンテキストメニューから「ドキュメント"foo.h"を開く」を選択すると、インクルードパスにてらした該当ファイルが開きます。これを「名前を付けて保管」しようとすれば、ファイルのロケーションがわかります。可能であれば、4.この不自然なマクロの意味がうまく推察できなかったのですが、typedef、template、等で置き換えられるなら、その方がC++言語的には自然です。個人的には、その言語の本質的な識別子を置換するのには強い違和感を持ちます(デバッグ用は許容しますが)。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。編集画面でインデントの破線が出てしまいます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。