这可能是一个非常简单的问题,但我一直在寻找答案,但似乎无法解决这个问题.我正在尝试在类中初始化一个常量变量常量指针.这是头文件:
class Scheduler{
public:
Scheduler();
explicit Scheduler( unsigned long * );
private:
const unsigned long *const thresh;
};
Run Code Online (Sandbox Code Playgroud)
这是该类的构造函数
Scheduler::Scheduler( unsigned long * threshold ):
thresh(threshold)
{}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译此代码时,我遇到了这个错误:
scheduler.cpp: In constructor ‘Scheduler::Scheduler()’:
scheduler.cpp:3: error: uninitialized member ‘Scheduler::thresh’ with ‘const’ type ‘const long unsigned int* const’
Run Code Online (Sandbox Code Playgroud)
在线讨论成员变量的构造函数中的常量成员变量的多个源指向使用初始化列表.我想我正在做我应该做的事,但显然它仍然没有好处.任何人都可以看到什么是错的?
我有一个调度表,我希望只初始化一次,并且只打算由一个函数使用.我希望将子程序之外的调度表移动到同一个匿名块中,但由于调度表使用闭包来调用传递给函数的对象的方法,因此在函数外部移动表会将其与访问对象分开.我对此调度表还有哪些其他选择?
我正在使用Perl 5.8,所以不幸的是我无法使用state变量.
sub foo {
my ($self, $var) = @_;
my %funcs = (
a => sub { $self->_a() },
b => sub { $self->_b() },
...
);
return $funcs{$var}->();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将数组与argv中的数组连接起来(我忘了它的正式名称,输入数组?参数数组?)
无论如何,我初始化原始数组,然后我memcpy用来将两个数组复制到新数组中.
int main(int argc, char *argv[]) {
char *args1[] = {"foo","bar"};
char **args = (char**) calloc(argc, sizeof(char*));
memcpy(args, args1, sizeof(char*) * 2);
memcpy(args + sizeof(char*) * 2, argv+1, sizeof(char*) * (argc-1));
Run Code Online (Sandbox Code Playgroud)
但是当我跑这个
printf("%s %s %s\n", args[0], args[1], args[2]);
Run Code Online (Sandbox Code Playgroud)
然后跑
./test baz
我得到了结果
foo bar(null)
所以我想弄清楚我的第二个memcpy搞砸了,但我找不到它.有帮助吗?提前致谢.