これはクラン/ GCCでコンパイル罰金のVisual C++は、非あいまいなクラスのあいまいなシンボルエラーを報告
namespace {
class ExprParentFinder {
friend class CodeCompletionTypeContextAnalyzer;
};
}
class CodeCompletionTypeContextAnalyzer {
public:
CodeCompletionTypeContextAnalyzer() {}
};
int main() {
CodeCompletionTypeContextAnalyzer TypeAnalyzer;
return 0;
}
、以下のC++のコードを考えてみましょう。 (あいまいなシンボル
1> consoleapplication2.cpp:しかし、MSVCはチョーク、およびレポート
1> ConsoleApplication2.cpp
1> consoleapplication2.cpp(29):エラーC2872: 'CodeCompletionTypeContextAnalyzer' 23):注:注:consoleapplication2.cpp(19)> 'CodeCompletionTypeContextAnalyzer'
1かもしれないか '`匿名の名前空間' :: CodeCompletionTypeContextAnalyzer」
CodeCompletionTypeContextAnalyzer TypeAnalyzer
はここではC++標準の観点からはあいまいですが、これはMSVCバグです。もしそうなら、このエラーの原因は何ですか。
回避するには、これは(すなわち、MSVCのバグ)整形しかし、あなたが実際に欲しいものになることはほとんどありません
int main() {
::CodeCompletionTypeContextAnalyzer TypeAnalyzer;
return 0;
}
'CodeCompletionTypeContextAnalyzer'クラスはこれまでに宣言されていますか? – Dai
これは最小限の再現可能な例です。このコードファイルは、あいまいさを示すために必要な唯一のものです。 –
'ExprParentFinder'が宣言されていない場合、' CodeCompletionTypeContextAnalyzer'の存在を知る方法は? – DrPepperJo