11

在我的类的头文件中,我正在尝试以下内容并收到编译器投诉:

private:
    static const double some_double= 1.0;

你应该如何真正做到这一点?

4

3 回答 3

21

在 C++11 中,您可以使用非整数常量表达式,这要归功于constexpr

private:
    static constexpr double some_double = 1.0;
于 2011-12-09T02:17:18.577 回答
4

在标头中声明它,并在一个编译单元中对其进行初始化(类的 .cpp 是合理的)。

//my_class.hpp
private:
static const double some_double;

//my_class.cpp
const double my_class::some_double = 1.0;
于 2011-12-09T02:12:04.253 回答
3

我通过这样做解决了这个问题:

//my_class.hpp
const double my_double() const {return 0.12345;}

//in use
double some_double = my_class::my_double();

我从

math::pi()
于 2011-12-09T03:17:45.803 回答