今天我看到了一些这样的代码:
int a = 0;
const decltype((a)) x = 10; // Error
const int b = 0;
decltype ((b)) y = 42; // Correct
Run Code Online (Sandbox Code Playgroud)
我可以看到为什么正确的代码是正确的,但我不明白为什么错误的代码不正确.
我测试了它,发现它有点奇怪.
const decltype((a)) x = 10;这应该是一个const int&权利?但它不编译!error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'.
我把它改成了const decltype((a)) x = a;然后编译.
那么,是x一个const参考?不,我发现它是一个非const引用.我可以修改它a的价值x.
为什么const修饰符不起作用?
我写了一个函数在"EMACS"中插入一些特殊字符,它将要求输入名称并插入相应的特殊字符.
示例:当我键入"alpha"时,将插入该函数?.
但是当我输入这些字符时,我发现我无法使用自动完成功能.我将alpha as ?和beta 定义为?,但是当我输入al[Tab]它时只需插入一个标签.
如何为我的功能定义自动完成功能?
- 编辑 - - - - - - - - - - - - - - - -
对不起,我还是emacs的新手,昨天刚开始写elisp函数.
我只是使用一种直接的方式来实现这个功能,使用interactive代码s来读取字符串
这就是我想知道如何完成自动完成的原因.因为我没有找到关于此类事情的任何教程.也许是因为我缺乏elisp知识才能找到正确的答案.
无论如何,这是我的代码:
(defun sp-char (char)
"Insert some special chars."
(interactive "sInput char name: ")
(let ((funky-char))
(setq funky-char
(cond
((string= char "Alpha" ) "?")
((string= char "alpha" ) "?")
((string= char "Beta" ) "?")
((string= char "beta" ) "?")
((string= …Run Code Online (Sandbox Code Playgroud) 我写了一个类,像这样(仅用于演示):
class cls{
public:
cls(int a):value(a){}
private:
int value;
};
Run Code Online (Sandbox Code Playgroud)
我想动态创建一个数组,每个元素初始化为一个特定的值,如 2:
cls *arr = new cls[N](2);
Run Code Online (Sandbox Code Playgroud)
但是 g++ 报告了“错误:数组 new 中的括号初始化器”。
我在互联网上搜索,但只找到了类似int and等基本类型的类似问题double,答案是 NO WAY。
假设类必须被初始化,如何解决问题?我必须放弃构造函数吗?