NS2、Otcl:使用类中拥有的实例的变量
我正在使用 NS2 在 C++ 中创建一些新类,然后将它们链接到 otcl。链接和一切都有效,但是当我尝试在对象中使用 otcl 变量时,我遇到了麻烦。
例如,假设我有一个带有变量 X
的类“Node
”。在代码中我想设置这个值,然后在一些 if 语句中使用它。
使用此代码设置变量没有问题:
$node1 set x 4
现在我遇到的问题是当我尝试在任何地方使用此变量 x 时。在 C++ 中,我们可以使用通用变量(即 y
)并表示“y=node.x
”,然后在某些 if 中使用 y
-声明。我试图寻找一种方法在 otcl 中执行相同的操作,但失败了。
任何帮助都是appriced。
提前致谢。
I'm using NS2 to create some new classes in C++ and then link them to otcl. The linkage and everything works, but when I try to use the otcl variables in an object, I'm having a trouble.
For example, suppose I have a class "Node
" with the variable X
. In the code I want to set this value and later on use it in some if-statements.
Setting the variable is no problem using this code:
$node1 set x 4
Now the problem I'm having is when I try to use this variable x anywhere. In C++ we could use a general variable (i.e., y
) and say "y=node.x
" and then use y
in some if-statements. I have tried to look for a method to perform the same thing in otcl, but failed.
Any help is appriciated.
Thanks in Advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
感谢多纳尔的回答。但我找到了我真正需要的(并且它有效),如下所示:
Thanks Donal for the answer. But I found what I really needed (and it worked), which is something like this:
我认为您正在寻找
OTclSetInstVar
和OTclGetInstVar
来分别写入和读取实例变量。它们在otcl.h
中定义,这是一个普通的 C 头文件,如果您习惯于通用 Tcl API,那么它们的使用应该非常明显。如果您有一个基于较新的 XOTcl 构建的 NS2 版本(我从 XOTcl 主要作者过去几年通过 Google Summer of Code 参与的项目中收集到的),那么 API 是
XOTclOSetInstVar
和OTclGetInstVar
位于(或者更确切地说包含在)xotcl.h
中。不过,类型签名不相同;它们只是逻辑上的临时替代品,而不是实际的临时替代品。 (OTcl 使用纯基于字符串的 API,XOTcl 使用更高效但复杂的基于Tcl_Obj
的 API。)I think you're looking for
OTclSetInstVar
andOTclGetInstVar
to write and read instance variables respectively. They're defined inotcl.h
, which is a plain C header file, and their use should be pretty obvious if you're used to general Tcl APIs.If you've got a version of NS2 built on top of the newer XOTcl (which I gather exists from the projects that the XOTcl main author is involved with through Google Summer of Code over the past couple of years) then the APIs are
XOTclOSetInstVar
andOTclGetInstVar
in (or rather included off of)xotcl.h
. The type signatures are not the same though; they're only logically drop-in replacements, and not actual drop-ins. (OTcl uses pure string-based APIs, XOTcl uses much more efficient – but complex –Tcl_Obj
-based APIs.)