我有一个类,并且想要创建一个const int变量,但该变量的值在类的构造函数中不可用。可以在一个方法而不是构造函数中初始化类的const成员变量吗?
在类的初始化方法中,我获取值。我可以用这种方法分配吗? 因为我只给它分配一次(正如const所说)为什么它不起作用?
代码为如下[只是个雏形]:
文件: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获得价值构造因为有一些限制。所以请不要这样做。
“我只给它分配一次(如const所说)” - const并没有说你可以分配一次。 const说你根本不能指定它(但你可以初始化它)。赋值和初始化是不同的事情,你尝试的是赋值。 – 2012-07-20 08:32:50
为什么你的类需要'iConstValue'是'const'?也许你的设计需要重新评估? – Aesthete 2012-07-20 08:39:09
当时的课程设计有缺陷。你*应该*能够在构造函数中获得值,否则你的对象没有被正确初始化,并且初始化是构造函数的工作。 – 2012-07-20 08:40:37