C++ cli 在C+中的类声明之外定义的属性+;

C++ cli 在C+中的类声明之外定义的属性+;,c++-cli,C++ Cli,可以在类之外声明变量吗 比如说, // a.h ref class A { public: property String^ P; private: String ^p; }; // a.cpp /* Define property here */ 理想情况下,所有变量都应该在类中定义。静态成员需要在类声明之外初始化,非静态成员需要通过构造函数初始化。但是,全局数据可以在类之外声明和初始化(与类没有关系) 你至少可以这样做,我刚刚测试过: // a.h ref class A

可以在类之外声明变量吗

比如说,

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

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

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


你至少可以这样做,我刚刚测试过:

// 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; }
它编译



简而言之,您不能只声明一个属性而不声明其访问器是什么,这样编译器就可以知道该属性是否可以读取、写入、重写等。

不,您可以使用全局变量而不是属性来执行此操作。当在类外部定义时,它不是任何东西的属性。好的,那么属性必须在类定义内部定义?它使类定义更长。谢谢,这就是我想要的。我应该试试看。谢谢
// a.cpp
String^ A::P::get() { return p; }
void A::P::set(String^ value) { p = value; }