【发布时间】:2021-09-27 01:07:43
【问题描述】:
我有一个类Color,我想定义一个此类的常量,并在类中使用该常量。所以代码可能是这样的:
class Color;
const Color BLACK = *new Color(0, 0, 0);
const Color WHITE = *new Color(255, 255, 255);
class Color {
const int r;
const int g;
const int b;
Color CloserBlackOrWhite() {
int rgb = r + g + b;
return rgb > (255*3/2) ? BLACK : WHITE;
}
}
当然,问题在于 BLACK/WHITE 无法定义,因为它们使用的是不完整类型。我尝试通过将 const 放置在类 decloration 下方来解决此问题。
class Color {
const int r;
const int g;
const int b;
Color CloserBlackOrWhite() {
int rgb = r + g + b;
return rgb > (255*3/2) ? BLACK : WHITE;
}
}
const Color BLACK = *new Color(0, 0, 0);
const Color WHITE = *new Color(255, 255, 255);
除了现在CloserBlackOrWhite 引用了一个未知值。
那么,有没有办法在类声明之前声明常量呢?
或者还有其他我想念的方法吗?
【问题讨论】:
-
黑白应该是指针吗?您正在使用 new,这意味着是的,但它们没有被定义为指针 ...
-
他们不应该是指针,更新了问题
-
你可以有黑色和白色的静态 const 成员。此外,您刚刚所做的更改是内存泄漏。你不应该在这里使用
new。 -
255*3/2应该非常接近。四舍五入到最接近的整数,但仍然...382相当不错。 -
没关系,那是我的错。我刚刚看到
3/2并认为你犯了一个错误。你所拥有的是合理的。