C++ 在c+;中是否有更改常量值的方法+;
我有一个用C++ 在c+;中是否有更改常量值的方法+;,c++,visual-studio-2012,header-files,C++,Visual Studio 2012,Header Files,我有一个用C++编写的算法,我正在用该算法实现GUI。问题是它包含常量值,即写入头文件的onu数。我想从用户那里获取输入,但我不能这样做,因为它是一个常量。有办法吗。我尝试过不同的方法,但无法做到这一点。算法是Glen Kramer DESL,我正在visual studio中实现GUI 请帮我怎么做 还有一件事需要澄清。 我不能将其声明为变量,因为若我这样做,那个么我会因为下面的行而得到一个错误 classolt:public SimBase 这里的NUM\u LLID是需要更改其值的常量。常
C++
编写的算法,我正在用该算法实现GUI。问题是它包含常量值,即写入头文件的onu数。我想从用户那里获取输入,但我不能这样做,因为它是一个常量。有办法吗。我尝试过不同的方法,但无法做到这一点。算法是Glen Kramer DESL
,我正在visual studio
中实现GUI
请帮我怎么做
还有一件事需要澄清。
我不能将其声明为变量,因为若我这样做,那个么我会因为下面的行而得到一个错误
classolt:public SimBase
这里的
NUM\u LLID
是需要更改其值的常量。常量在顶部包含的头文件中声明。可能是您可以编写一个包装器方法,从用户处获取常量,并通过创建一个新变量来内部编写您自己的方法,复制用户输入…您不能更改常量。根据定义,它是不可变的。改用普通变量声明。如果这会创建一个全局变量(通常是邪恶的),则将其作为配置类中的可变属性。如果代码使用常量标识符,则可以将常量更改为变量:来自:
#定义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.
新增:
#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 <代码>的常数文字。变量不适用于案例
。代码需要重写
在算法或代码中,将常量更改为变量;“我想在单行道上走错路。”。我知道这意味着违反法律,冒着高速流量导致严重RTA的风险,但我需要知道怎么做。@ThomasMatthews它给出了错误,这一行的原因如上所述。为什么要将常量传递给函数?它们是常数…;-)传递数组时,应该有3个参数:指向数组的指针、数组中项目的大小或数量以及等待。。。。。阵列的容量(通常为常数)。:-)好吧,我买这个。它确实让我想起了自描述数据类型的一些优点,不过…;-)为什么使用宏而不是常量?