#include <iostream>
using namespace std;
class base
{
static base* mybase;
};
base::mybase = NULL;
char* str = "hello world";
int main()
{
std::cout<<"hello world"<<std::endl;
return 0;
}
コード行"base:: mybase = NULL"コンパイラエラーが発生する理由!
#include <iostream>
using namespace std;
class base
{
static base* mybase;
};
base::mybase = NULL;
char* str = "hello world";
int main()
{
std::cout<<"hello world"<<std::endl;
return 0;
}
コード行"base:: mybase = NULL"コンパイラエラーが発生する理由!
タイプも指定する必要があります。のタイプmybase
は次のbase*
とおりです。
base* base::mybase = NULL;
これはbase*
、 のメンバーでbase
あり、呼び出されるを定義し、mybase
に初期化しNULL
ます。
また、次の行で変数の型を指定する必要があります。
base* base::mybase = NULL;
なぜコード
base::mybase = NULL
コンパイラ エラーの行!
それは有効な宣言ではないからです。これは (クラス base のプライベート メンバーにアクセスできるコンテキストでは) 有効な代入式ですが、名前空間スコープで式ステートメントを使用することはできません。
静的メンバーの定義を提供するには、次を使用します。
base* base::mybase = NULL;