尝试在 omnet++ 中创建动态模块时遇到的问题
Problem encountered while trying to create dynamic modules in omnet++
我是初学者,正在使用 Omnet++ 学习网络模拟。
我一直在尝试创建动态模块(客户端)并将其连接到静态创建的模块(服务器),但是函数 getParentModule() 出现错误 说:
use of undeclared identifier 'getParentModule'.
这是我的服务器class:
#include "Server.h"
#include <string>
Define_Module(Server);
void create_grp(int num, int id) {
cModuleType *moduleType = cModuleType::get("c");
std::string name = "grp" + std::to_string(id);
//Here my error
cModule *module = moduleType->create(name, getParentModule());
module->setGateSize("in", 1);
module->setGateSize("out", 1);
module->finalizeParameters();
module->buildInside();
}
void Server::initialize() {
// TODO Auto-generated constructor stub
create_grp(3, 2);
}
这是我的 .ned 文件
simple Server
{
gates:
inout g1[];
}
simple Admin
{
parameters:
int nbr_of_groups_to_create;
int nbr_of_nodes_in_each_group;
gates:
inout g2;
}
simple Client
{
gates:
inout g3;
}
network Network
{
@display("bgb=384,297");
submodules:
s: Server {
@display("i=device/server;p=173,89");
}
a: Admin {
@display("p=264,167;i=device/laptop");
}
c[10]: Client {
@display("i=device/pc;p=79,167");
}
connections:
a.g2 <--> s.g1++;
for i=0..9 {
s.g1++ <--> c[i].g3;
}
}
您已将 create_grp()
声明为独立函数,因此它无法知道什么是 getParentModule()
。我建议在 class Server
.
中声明 create_grp
编辑
create()
需要 const char*
作为第一个参数,但您提供了 std::string
。您应该使用c_std()
将std::string
转换为const char*
,例如:
cModule *module = moduleType->create(name.c_str(), getParentModule());
我是初学者,正在使用 Omnet++ 学习网络模拟。 我一直在尝试创建动态模块(客户端)并将其连接到静态创建的模块(服务器),但是函数 getParentModule() 出现错误 说:
use of undeclared identifier 'getParentModule'.
这是我的服务器class:
#include "Server.h"
#include <string>
Define_Module(Server);
void create_grp(int num, int id) {
cModuleType *moduleType = cModuleType::get("c");
std::string name = "grp" + std::to_string(id);
//Here my error
cModule *module = moduleType->create(name, getParentModule());
module->setGateSize("in", 1);
module->setGateSize("out", 1);
module->finalizeParameters();
module->buildInside();
}
void Server::initialize() {
// TODO Auto-generated constructor stub
create_grp(3, 2);
}
这是我的 .ned 文件
simple Server
{
gates:
inout g1[];
}
simple Admin
{
parameters:
int nbr_of_groups_to_create;
int nbr_of_nodes_in_each_group;
gates:
inout g2;
}
simple Client
{
gates:
inout g3;
}
network Network
{
@display("bgb=384,297");
submodules:
s: Server {
@display("i=device/server;p=173,89");
}
a: Admin {
@display("p=264,167;i=device/laptop");
}
c[10]: Client {
@display("i=device/pc;p=79,167");
}
connections:
a.g2 <--> s.g1++;
for i=0..9 {
s.g1++ <--> c[i].g3;
}
}
您已将 create_grp()
声明为独立函数,因此它无法知道什么是 getParentModule()
。我建议在 class Server
.
create_grp
编辑
create()
需要 const char*
作为第一个参数,但您提供了 std::string
。您应该使用c_std()
将std::string
转换为const char*
,例如:
cModule *module = moduleType->create(name.c_str(), getParentModule());