2014-09-10 68 views
-1

是否可以在类之外声明变量?在C++类声明之外定义的属性

例如,

// a.h 
ref class A 
{ 
public: 
    property String^ P; 
private: 
    String ^p; 
}; 

// a.cpp 
/* Define property here */ 
+0

不,你不这与一个全局变量,而不是一个属性。当定义在课堂之外时,它不是任何东西的属性。 – 2014-09-10 08:51:12

回答

1

你至少可以做到这一点以外initilalized,我只是测试:

// a.h 
ref class A 
{ 
public: 
    property String^ P { String^ get(); void set(String^); } 
private: 
    String ^p; 
}; 

您定义正是如此:

// a.cpp 
String^ A::P::get() { return p; } 
void A::P::set(String^ value) { p = value; } 

它编译。


总之,你不能只是声明了一个属性,而不述说它的存取是,这样编译器可以知道属性是否可以读取,写入,重写等

+0

谢谢,这就是我正在寻找。我应该尝试过。谢谢。 – jax 2014-09-10 10:39:36

1

所有变量应该理想的类中定义。静态成员需要在类声明外进行初始化,非静态成员需要通过构造函数初始化。全球数据,但是,可以声明和类(与类没有关系)

// a.h 
extern int ga; 
class A 
{ 
    int m_a; 
    static int s_a; 
public: 
    A(int aa) : m_a(aa){ 
     // constructor 
    } 
}; 

// a.cpp 
int ga = 4; // global data initialization 
int A::s_a = 0; // class static data initialization 
+0

好的,所以属性必须在类定义内部定义?它使类定义时间更长。 – jax 2014-09-10 09:15:57

+0

是的,这是正确的:-) – 2014-09-10 12:56:20