私のプロジェクトには、Configurationという名前のクラスが2つあります。 1つは名前空間共通です。それがグローバルスコープでグローバルscope.Theクラスでありますので、他には、名前空間を持っていないこのようなものです: Configuration.h:C++でグローバルスコープに属する静的メンバーを初期化する方法
class Configuration
{
public:
static int a;
static string b;
void func();
}
Configuration.cpp:
#include "Configuration.h"
int ::Configuration a; //ok
std::string ::Configuration b;//error,the complier treat it like this "std::string::Configuration"
コンパイラからのメッセージが似ていますこの: configuration.cpp:17:ERROR: 'のstd ::文字列::設定を' 解決方法
を宣言されていません。コンプライアーが "std :: string :: Configuration"を "std :: string :: Configuration"として扱うのはなぜですか?
'Class'が間違っている:あなたが本当にしたい場合は
は、あなたが何らかの形で間接のいずれかの余分なレベルを作成する必要があります。ここに偽のコードを投稿しないでください。また、エラーメッセージを絵としてではなく、逐語テキストとして投稿してください。あなたの問題を再現する[MCVE]を提供してください。 –
私が質問に書いているように、名前空間共通の別のクラスConfigurationがあり、私もそれを使う必要があります。私がこのように書く場合、 'int Configuration :: a; std :: string Configuration :: b'、このようなコンパイラのプロンプト: 'Configuration'への参照はあいまいです – Lianshuai
それでも 'Class'は間違っています。 –