【问题标题】:can a function invoke another using a dot operator一个函数可以使用点运算符调用另一个函数吗
【发布时间】:2014-01-25 10:13:24
【问题描述】:

Tcl::instance().eval(at->proc_); ns2 中的指令。您能否解释一下在两个函数之间放置点运算符的概念,就好像我没有弄错instance()eval() 都是函数一样,而且我从来没有遇到过这样的概念,其中一个函数通过使用点运算符调用另一个函数。

【问题讨论】:

    标签: c++ ns2


    【解决方案1】:

    Tcl::instances一无所知的猜测:

    Tcl::instance 是一个返回某个对象的函数。该对象有一个名为eval 的方法。程序员认为命名返回的对象不合适,而是直接在结果上调用方法。

    
    struct Bar {
        Baz getBaz();
    }
    
    struct Foo {
        Bar getBar();
    }
    
    Foo foo = new Foo;
    
    // the next two lines...
    Bar bar = foo.getBar();
    Baz baz = bar.getBaz();
    
    // are exactly the same as this next line
    baz = foo.getBar().getBaz();
    

    【讨论】:

      【解决方案2】:

      Tcl 是一个单例,您使用静态方法 instance 获取当前实例,这将返回对Tcl 类型对象的引用。 您使用:: 访问类的静态成员。然后,您可以使用通常的. 表示法在此类对象上调用方法。

      那一行是以下的简写:

      Tcl &tcl = Tcl::instance();
      tcl.eval(at->proc_);
      

      HereTcl::instance 调用的简短参考:

      类的单个实例在~tclcl/Tcl.cc 中声明为静态成员变量;程序员必须获得对该实例的引用才能访问本节中描述的其他方法。访问此实例所需的语句是:

         Tcl& tcl = Tcl::instance();
      

      【讨论】:

        猜你喜欢
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多