c++ - 类的常量成员变量可以在方法而不是构造函数中初始化吗?

标签 c++ class design-patterns initialization constants

我有一个类,想创建一个 const int 变量,但该变量的值在类的构造函数中对我不可用。

在类的初始化方法中我得到了值。我可以用那种方法分配它吗? 因为我只分配一次(如 const 所说),为什么它不起作用?

代码如下[只是一个原型(prototype)]:

文件:A.h

Class A
{
  private :
  const long int iConstValue;

  public :
  A();
  initClassA();
}

文件:A.cpp

A::A()
{
 //CanNot initialize iConstValue (Don't have it)
}

A::initClassA(some params)
{
 // calculation according to params for iConstValue
 iConstValue = (some value)
}

这是行不通的。有人有任何解决方案吗?

注意:无法通过任何方式在构造函数中获取 iconstValue 的值,因为有一些限制。所以请不要建议这样做。

最佳答案

一个小例子:

class A
{
public:
  A():a(initial_value_of_a()) {}

private:
  const int a;
  int initial_value_of_a() { return 5; /* some computation here */ };
};

关于c++ - 类的常量成员变量可以在方法而不是构造函数中初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575637/

相关文章:

c++ - 访问未定义子类型时的自定义编译错误消息

c++ - 如何避免 int(xxx)_t 之间的重叠,并使我的代码正确?

c++ - OSX,USB 海量存储发现

c++ - 添加常量对象

algorithm - 递归算法 : suggested patterns and practices?

validation - 在域驱动设计中,哪里可以验证分页逻辑?

将方法名称保存在属性文件中的 Java 设计模式

C++基础类

c++ - 编译器向空类声明添加了什么?

c++ - 禁用编译器生成的复制赋值运算符