小编Sis*_*hus的帖子

虚函数:迭代用子类对象填充的向量<Base Class>

简短描述:
我正在迭代向量,在向量中的每个对象上调用虚函数,以便执行一系列动作.向量是基类,迭代器也是.所有的对象都是孩子.当调用虚函数时,它执行基类的函数.

(真的)长描述:我试图模拟一个有一系列行为的生物.我的基类是抽象的,只有两个函数(虚拟),所有子类都被覆盖了:

class Behavior
{
public:
     Behavior();
    ~Behavior(void){}
 virtual void execute(){} 
 virtual BEHAVIOR_TYPE getType() {return m_Type;}


protected:
BEHAVIOR_TYPE m_Type;
};
Run Code Online (Sandbox Code Playgroud)

我创造了许多孩子的行为,比如移动,消费,侦察等.

class Move :
    public Behavior
{
public:
BEHAVIOR_TYPE getType() {return m_Type;}
    enum Direction {N, NE, E, SE, S, SW, W, NW};
Move(DOCO * d);
~Move(void);
void execute() ;
    Direction chooseDirection();
    void setDirection(Direction newDirection);
private:
    Direction m_Direction;
    DOCO *I;
BEHAVIOR_TYPE m_Type;

};
Run Code Online (Sandbox Code Playgroud)

我创建了一个向量,我在其上推送了每个Behavior子类的实例以及遍历它的迭代器:

vector<Behavior> m_Behavior;
vector<Behavior>::iterator bIt;
Run Code Online (Sandbox Code Playgroud)

当生物获得动作序列时,我尝试迭代向量,取消引用迭代器,并调用执行函数:

void World::justDoIt()
{
    for(dIt=myDOCO.begin(); dIt!=myDOCO.end(); ++dIt)
{
    vector<Behavior>::iterator myBehavior=(dIt)->getFirstBehavior();
    vector<Behavior>::iterator end=(dIt)->getLastBehavior(); …
Run Code Online (Sandbox Code Playgroud)

c++ oop virtual-functions

6
推荐指数
1
解决办法
4775
查看次数

RobotFramework:使用'运行关键字{if,除非}'获取返回值

从RobotFramework中的关键字获取返回变量通常很容易,只需在关键字中放入一个返回值,并在变量后面运行关键字来存储返回值.

当我想有条件地运行该关键字时遇到问题.关键字Run Keyword IfRun Keyword Unless关键字都Wait Until Keyword Succeeds希望将关键字作为第一个参数,如果第一个参数是变量,则会抛出错误.

目前我正在通过在关键字中设置套件级变量来解决这个问题,我知道我将有条件地运行,但这感觉有些笨拙.更糟糕的是,我必须重构任何在最初设计时作为条件关键字不需要的关键字.当然,我可能永远不会使用返回变量,并且总是设置套件级变量,但这只会让我觉得很脏.

我还没有找到一个干净的方法来做到这一点.它有效,但我希望其他人找到更好的方法.

robotframework

1
推荐指数
1
解决办法
6912
查看次数

标签 统计

c++ ×1

oop ×1

robotframework ×1

virtual-functions ×1