Можно ли объявить переменную за пределами класса?Свойства, определенные вне декларации класса в C++
Например,
// a.h
ref class A
{
public:
property String^ P;
private:
String ^p;
};
// a.cpp
/* Define property here */
Можно ли объявить переменную за пределами класса?Свойства, определенные вне декларации класса в C++
Например,
// 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; }
Он компилируется.
Короче говоря, вы не можете просто объявить свойство, не объявляя, что его методы доступа, поэтому компилятор может знать, является ли свойство можно прочитать, переопределены и т.д.
Спасибо, вот что я искал. Я должен был пробовать это. Благодарю. – jax
Все переменные в идеале должны быть определены в классе. Статический член должен быть инициализирован вне объявления класса, а нестатические члены должны быть инициализированы через конструктор. Глобальные данные, однако, могут быть объявлены и initilalized вне класса (никакого отношения с классом)
// 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
Итак, свойства должны определяться внутри определения класса? Это делает определение класса намного дольше. – jax
Да, это правильно :-) –
Нет, вы это с глобальной переменной, а не с собственностью. Когда он определен вне класса, он не является ничем. –