小编kda*_*ani的帖子

处理C++结构中未知类型的最佳方法是什么?

我正在为一个简单的,类似Lisp的编程语言编写一个解释器.它将代码处理成节点,所有节点都有类型,其中一些可能具有索引顺序的子节点.由于信息性质的不同,我不能对所有节点值使用相同长度的类型.它们的类型名称是枚举类型,但我对值类型的唯一想法是void *.但是当我使用它时,我认为我必须非常小心.我的意思是,我不能使用任何默认的析构函数,我必须编写一个关心节点类型的析构函数.此外,我甚至需要使用大量的强制转换来访问值.

这就是我所说的:

enum NodeType {/* Some node types */}

class Node
{
public:
    Node(string input_code);
private:
    NodeType type; // Having this I can know the type of value
    void* value;
};
Run Code Online (Sandbox Code Playgroud)

有没有更安全的方法,制作更好的代码,但仍然像使用void指针一样高效?

c++ interpreter pointers void-pointers

4
推荐指数
1
解决办法
2725
查看次数

如何在PyGTK应用程序中更改MenuItem的标签?

我正在用Python编写一个用于Ubuntu的小应用程序指示器.我需要更改不敏感(禁用)gtk.MenuItem的文本.我知道这个功能的活生生的例子,这是内置蓝牙指示器中最顶级的项目.

python gtk ubuntu pygtk indicator

3
推荐指数
1
解决办法
1305
查看次数

是否可以为CtrlP插件的弹出窗口设置单独的颜色方案?

认为这是我第一次遇到vimscript,我检查了插件代码.它有以下几行代码:

fu! ctrlp#init(type, ...)
    if exists('s:init') || s:iscmdwin() | retu | en
    let [s:ermsg, v:errmsg] = [v:errmsg, '']
    let [s:matches, s:init] = [1, 1]
    cal s:Reset(a:0 ? a:1 : {})
    noa cal s:Open()
    cal s:SetWD(a:0 ? a:1 : {})
    gal s:MapNorms()
    cal s:MapSpecs()
    cal ctrlp#syntax()
    cal ctrlp#setlines(s:settype(a:type))
    cal s:SetDefTxt()
    cal s:BuildPrompt(1)
    if s:keyloop | cal s:KeyLoop() | en
endf
Run Code Online (Sandbox Code Playgroud)

如果我colorscheme atom在函数中放置或类似的东西,它会改变整个缓冲区的颜色方案,而不是只改变弹出窗口的颜色方案.有没有办法配置CtrlP使用单独的配色方案?当然,我并不打算将配置放到插件代码中,因此我也在寻找一种解决方案,使我可以将设置放入我的设置中.vimrc,例如使用autocmd.

vim color-scheme

0
推荐指数
1
解决办法
504
查看次数