网络模拟器2中的指针声明(NS2)

时间:2014-05-07 12:49:58

标签: c++ pointers ns2

我想在c ++中声明一个指针:

class MyAgent : public Agent
{
private:
    int x,y;
    int* xPtr;
    int *yPtr;
    void add();
public:
    MyAgent(); // Declaration of constructor
};

MyAgent::MyAgent() : Agent(PT_UDP)
{
    xPtr= &x;
    yPtr= &y;
    bind("x_otcl", &x);
    bind("y_otcl", &y);

} 
void MyAgent::add()
{
    Tcl& tcl = Tcl::instance();
    tcl.eval("puts \"From add() \"");
    printf("\nx=%d and y = %d\nx+y = %d\n", x,y,x+y);
    printf("xPtr=%d\n",*xPtr);
    printf("yPtr=%d\n",*yPtr);
}

xPtr和yPtr有什么区别? xPtr是指针吗?编译器是否忽略该空间?从结果来看,我认为它们都是指针,但我不确定。我总是使用第二个(yPtr)来声明指针。

另请告诉我如何在c ++和otcl之间绑定指针。

1 个答案:

答案 0 :(得分:0)

xPtryPtr都是指向整数的指针。是的,编译器会忽略这个空间。

要将oTcl变量(x和y)与C ++变量(*xPtr*yPtr)绑定,请使用以下代码。

Tcl& tcl = Tcl::instance();
tcl.eval("set variable_in_tcl");
variable_in_c++ = atoi(tcl.result());

正如我所知,您正在调用add()函数,该函数将从xPtr脚本中获取变量yPtroTcl值并打印变量的值。因此,您的代码将如下所示:

class MyAgent : public Agent
{
private:
    // Use x and y in tcl script

    int* xPtr;

    int *yPtr;

    void add();

public:

    MyAgent(); // Declaration of constructor
};

MyAgent::MyAgent() : Agent(PT_UDP)
{
    Tcl& tcl = Tcl::instance();
    tcl.eval("set x");
    *xPtr = atoi(tcl.result());
    tcl.eval("set y");
    *yPtr = atoi(tcl.result());
}

void MyAgent::add()
{
    printf("\nx=%d and y = %d\nx+y = %d\n", *xPtr,*yPtr,*xPtr+*yPtr);

    printf("xPtr=%d\n",*xPtr);

    printf("yPtr=%d\n",*yPtr);
}