这个是做不到的。
但可以从设计上作一些折衷,
(1)假如你是想定义一些该类的所有对象都共享的“常量”,那么可以声明成static const,然后在类外初始化:
class MyClass
{
public:
MyClass();
private:
static const COLORREF m_color[3];
};
const COLORREF MyClass::m_color[3] = {0xff, 0xff00, 0xff0000};
(2)如果你是想为类的每个对象定义“只读”变量,那么就不要定义成const,而是使用一般的数组,然后只提供一个public的“get”方法,不要提供“set”方法就是了——这样只需要在构造函数里初始化一次,以后就只读的了:
class MyClass
{
public:
MyClass();
const COLORREF* getColorRef() const;
private:
COLORREF m_color[3];
};
MyClass::MyClass() {
m_color[0] = 0xff;
m_color[1] = 0xff00;
m_color[2] = 0xff0000;
}
const COLORREF* MyClass::getColorRef() const {
return m_color;
}
但可以从设计上作一些折衷,
(1)假如你是想定义一些该类的所有对象都共享的“常量”,那么可以声明成static const,然后在类外初始化:
class MyClass
{
public:
MyClass();
private:
static const COLORREF m_color[3];
};
const COLORREF MyClass::m_color[3] = {0xff, 0xff00, 0xff0000};
(2)如果你是想为类的每个对象定义“只读”变量,那么就不要定义成const,而是使用一般的数组,然后只提供一个public的“get”方法,不要提供“set”方法就是了——这样只需要在构造函数里初始化一次,以后就只读的了:
class MyClass
{
public:
MyClass();
const COLORREF* getColorRef() const;
private:
COLORREF m_color[3];
};
MyClass::MyClass() {
m_color[0] = 0xff;
m_color[1] = 0xff00;
m_color[2] = 0xff0000;
}
const COLORREF* MyClass::getColorRef() const {
return m_color;
}