我已經聲明瞭全局數據和全局函數,當我嘗試在類編譯器中訪問時拋出錯誤爲「我不能出現在常量表達式中」,爲什麼?如何訪問全局數據成員和類中的成員函數?
#include<iostream>
using namespace std;
int i=20;
void fn()
{
cout<<" I am outside class"<<endl;
}
class a
{
public:
int x= ::i; // error is i cannot appear in constant expression
void accessGlobal()
{
::fn(); //fn() is being called
}
};
int main()
{
a obj;
obj.accessGlobal();
}
什麼編譯器?在這裏編譯:http://ideone.com/ig4sXo – quantdev
'int x = :: i;'在C++中,你不能在同一行聲明和初始化一個成員變量。初始化應該在構造函數中進行。 – crashmstr
您的示例在C++ 11標準中是合法的,它引入了非靜態數據成員初始值設定項,但在C++ 98標準編譯中將導致錯誤。 – undermind