我想对抽象L3Address SlectedNodes的字段使用标准容器类[]; //将使用std :: vector吗?我做了以下消息声明:
在此处输入代码
packet PacketData {
@customize(true);
abstract L3Address SlectedNodes[]; // will use std::vector<L3Address >
}
在生成的C ++代码中,我编写以下C ++文件:
#include <iostream>
#include <sstream>
#include "PacketData_m.h"
class PacketDataPacket : public PacketData_Base
{
protected:
std::vector<L3Address> SlectedNodes;// SlectedNodes= SlectedNodes
// helper method
void unsupported() {throw cRuntimeError("unsupported method called");}
public:
// SlectedNodes methods
virtual L3Address getSlectedNodes(unsigned int k) {return SlectedNodes[k];}
virtual void setSlectedNodes(unsigned int k, const L3Address& SlectedNodes)
{SlectedNodes[k]=L3Address& SlectedNodes;}
virtual void addSlectedNodes(const L3Address& SlectedNodes)
{SlectedNodes.push_back(L3Address& SlectedNodes);}
virtual void setSlectedNodesArraySize(unsigned int size)
{SlectedNodes.resize(size);}
virtualL3Address getSlectedNodesArraySize() const {return
SlectedNodes.size();}
};
Register_Class(PacketData);
一些其他样板代码
PacketData_Base::PacketData(const char *name=nullptr, int kind=0)
:PacketData_Base(name,kind) {
}
PacketData_Base:: PacketData(constPacketData& other)
:PacketData_Base(other.getName()) {
operator=(other);
}
PacketData& operator=(const PacketData& other) {
if (&other==this) return *this;
PacketData_Base::operator=(other);
SlectedNodes = other.SlectedNodes;
}
virtualPacketData *dup() {
return newPacketData(*this);
}
是否将标准容器类(STL)用作字段,但是
std::vector< L3Address> IntVector;
是真的吗?有什么问题吗?