是否可以在类之外声明变量?
例如,
// a.h
ref class A
{
public:
property String^ P;
private:
String ^p;
};
// a.cpp
/* Define property here */
答案 0 :(得分: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
答案 1 :(得分:1)
你至少可以这样做,我刚刚测试过:
// 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; }
它编译。</ p>
简而言之,您不能在不声明其访问者的情况下声明属性,因此编译器可以知道该属性是否可以被读取,写入,覆盖等。