gpt4 book ai didi

c++ - 如何将标准容器作为字段添加到 OMNet++ 消息中?

转载 作者:行者123 更新时间:2023-12-01 21:49:01 43 4
gpt4 key购买 nike

我正在尝试创建一个简单的 message definition包含使用 std::vector 实现的字段。根据 OMNet++ 5.5 manual ch. 6 sec. 8.1 , 这看起来很简单。

但是,我使用的是 OMNet++ 6.0pre6:我不知道这样做的正确方法是什么,因为手册已经过时1,而且变化非常肤浅在 nedxml 更新日志中提到。

消息定义可以归结为the exact example in the manual , 但在这种情况下,它是一个 message 而不是 packet (两者都会产生相同的错误):

cplusplus {{
#include <vector>
typedef std::vector<int> IntVector;
}}

class noncobject IntVector;

message SimpleMsg {
int this_thing;
int that_thing;
IntVector these_things;
}

opp_msgtool(消息到 C++ 的转译器)提供了以下错误:

SimpleMsg.msg:6: Error: Type declarations are not needed with imports, try invoking the message compiler in legacy (4.x) mode using the --msg4 option
SimpleMsg.msg:11: Error: unknown type 'IntVector' for field 'these_things' in 'SimpleMsg'

认为 导入不需要类型声明 可能是从 OMNet 5.x 到 6.x 的变化的简单总结,我继续删除 class noncobject IntVector .虽然它消除了第一个错误,但它仍然会产生 Error: unknown type 'IntVector' for field 'these_things in 'SimpleMsg'

想法?建议?有什么教训?

编辑:值得注意的是发现 there are some notes in the nedxml changelog referring to changes between 4.0-5.x and 6.0 ,但如何理想地使用它还不太清楚。


1 当然至少不能完全适用于 OMNet++ 6.0。

最佳答案

应该是这样的:

cplusplus {{
#include <vector>
typedef std::vector<int> IntVector;
}}

class IntVector {
@existingClass;
}

message SimpleMsg {
int this_thing;
int that_thing;
IntVector these_things;
}

另一种“解决方案”是强制消息编译器兼容 4.x(旧模式)。只需在 makefrag 文件中添加以下行

MSGC:=$(MSGC) --msg4

但是,您迟早应该转换您的代码。如果您希望您的代码同时使用 OMNeT++ 5.5 和 6.0 进行编译,那么您绝对应该明确指定 MSG 编译器版本。兼容 4.x 或 6.x。

关于c++ - 如何将标准容器作为字段添加到 OMNet++ 消息中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59786184/

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