代码之家  ›  专栏  ›  技术社区  ›  Moia

调用类方法插入模板类

  •  -2
  • Moia  · 技术社区  · 8 年前

    我对模板编程很陌生,我找不到任何相关的问题,如果已经存在类似的问题,很抱歉。

    我有我的模板类

        template<class T>
        class MyTemplate
        {
          public:
           virtual void set(const T& val) { value_ = val; }
           virtual T get() const { return value_; }
           // other stuff
    
    
          private:
           T value_;
        }
    

    和自定义类

    class Foo
    {
       void bar();
    }
    

    然后我声明一个变量

    MyTemplate<Foo> var;
    

    我该怎么称呼 条形图() 方法来自 风险值 ?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Paul Floyd    8 年前

    要调用bar(),您需要一个Foo实例。如前所述,您可以使用继承。我看到该问题已被编辑以添加这样一位成员。不能直接调用模板类型的成员。您可以在MyTemplate中添加包装器,例如“doBar()”。你也可以(尽管这不是一个好主意)公开Foo成员。

    #include <iostream>
    
    template<class T>
    class MyTemplate
    {
    public:
         void doBar() { value_.bar(); }
    public:
        T value_;
    };
    
    class Foo
    {
    public:
        void bar();
    };
    
    void Foo::bar()
    {
        std::cout << "Foo::bar()\n";
    }
    
    int main()
    {
        MyTemplate<Foo> var;
        var.doBar();
        var.value_.bar();
    }
    

    顺便说一句,还有其他的老前辈吗 Swaine's Flames 在Dobbs博士杂志上?