gpt4 book ai didi

c++ - 改进 make 函数的 Swig-tcl 包装

转载 作者:行者123 更新时间:2023-11-28 06:21:30 32 4
gpt4 key购买 nike

当像这样包装构造函数时:

struct A {
A(){}
void hello() {std::cout << "hello\n";}
};

Swig-tcl 太棒了!事实上,在 tcl 中我可以做到:

A a
a hello

然而,有些情况下对象 a 的创建并不简单(即我可能只想返回对堆上另一个对象的引用)并且必须通过 make 函数,例如:

A make(){ return A(); }

然后 Swig-tcl 的包装变得相当困惑:

set a [make]
$a hello

我想知道是否有一种方法可以在使用 make 函数时恢复 tcl 脚本的初始清晰度。

最佳答案

我觉得不是特别乱!只是第二种情况下的命令有一个您无法控制的名称,因此您将名称保存在一个变量中。

您可以重命名对象命令或为其创建别名:

rename $a a
interp alias {} a {} $a

使用其中任何一种技术后,您将获得一个名为 a 的命令,您可以在其中调用方法。 但是,在这两种情况下,如果您将对象作为参数传递给另一个 SWIGged 函数或方法,则需要原始名称。因此,我个人建议只使用变量中带有名称的版本。

您应该检查带有rename 的版本是否有效;有可能——尽管不太可能——它可能不会……

关于c++ - 改进 make 函数的 Swig-tcl 包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232996/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com