无论如何要改变c ++中的常量值

时间:2015-07-11 22:51:21

标签: c++ visual-studio-2012 header-files

我有一个用C++编写的算法,我正在该算法中实现GUI。问题是它包含常量值,即头文件中写入的onu数。我想从用户那里获取输入,但我不能这样做,因为它是一个常数。有没有办法做到这一点。我尝试了不同的方法,但无法做到这一点。算法是Glen Kramer DESL,我正在visual studio中实现GUI。

请帮我怎么做。

还有一点需要澄清。 我不能将其声明为变量,因为如果我这样做,那么由于跟随行而出现错误。

class OLT : public SimBase< NUM_LLID >

此处NUM_LLID是需要更改其值的常量。并且常量在顶部包含的头文件中声明。

3 个答案:

答案 0 :(得分:1)

您无法更改常量。根据定义,它是不可变的。请改用普通变量声明。如果这会创建一个全局变量(通常是邪恶的),那么在配置类中使它成为一个可变属性。

答案 1 :(得分:1)

如果代码使用常量的标识符,则可以将常量更改为变量:
发件人
#define PI 3.14159

double PI = 3.14159;

您必须重新编译并验证代码编译时没有警告和错误。

某些版本的C ++可能不允许变量作为数组容量:

#define BUFFER_SIZE 1024
unsigned int buffer[BUFFER_SIZE];

unsigned int BUFFER_SIZE = 1024;
unsigned int buffer[BUFFER_SIZE]; // May not be valid, depends on C++ version.  

您还需要查看常量传递给函数的位置。

此外,更改可能会导致程序可执行文件大小更改并且内存要求也会更改。例如,常量可以放在可执行文件中。将常量更改为变量需要内存位置和从内存中获取的指令。

切换语句

C ++语言需要case语句中switch的常量文字。变量不适用于case。代码需要重写。

答案 2 :(得分:0)

可能你可以编写一个包装器方法,该方法从用户获取常量,并通过创建复制用户输入的新变量在内部编写自己的方法......