C++ 类成员方法-返回类型模板

C++ 类成员方法-返回类型模板,c++,templates,c++11,C++,Templates,C++11,在C++11中有可能以某种干净的方式实现这一点吗 class Foo { public: Foo(Bar1 * b1, Bar2 * b2) : bar1(b1), bar2(b2) {} template <typename T> T * GetData<T>(); private: Bar1 * bar1; Bar2 * bar2; }; template <> Bar1 * Foo::GetDa

在C++11中有可能以某种干净的方式实现这一点吗

class Foo 
{
   public:
     Foo(Bar1 * b1, Bar2 * b2) : bar1(b1), bar2(b2) {}
     template <typename T> T * GetData<T>();
   private:
      Bar1 * bar1;
      Bar2 * bar2;
};

template <> Bar1 * Foo::GetData<Bar1>() { return this->bar1;}
template <> Bar2 * Foo::GetData<Bar2>() { return this->bar2;}
class-Foo
{
公众:
Foo(Bar1*b1,Bar2*b2):Bar1(b1),Bar2(b2){}
模板T*GetData();
私人:
Bar1*Bar1;
Bar2*Bar2;
};
模板Bar1*Foo::GetData(){返回此->Bar1;}
模板Bar2*Foo::GetData(){返回此->Bar2;}
和在主代码中

Foo * foo = new Foo(new Bar1(), new Bar2());
Bar1 * b1 = foo->GetData<Bar1>();
Bar2 * b2 = foo->GetData<Bar2>();
Foo*Foo=newfoo(newbar1(),newbar2());
Bar1*b1=foo->GetData();
Bar2*b2=foo->GetData();
这样做,它将不会编译。

删除模板成员声明中的

 template <typename T>  T* GetData();
template T*GetData();
而不是:

 template <typename T>  T* GetData<T>();
template T*GetData();
删除模板成员声明中的

 template <typename T>  T* GetData();
template T*GetData();
而不是:

 template <typename T>  T* GetData<T>();
template T*GetData();
删除模板成员声明中的

 template <typename T>  T* GetData();
template T*GetData();
而不是:

 template <typename T>  T* GetData<T>();
template T*GetData();
删除模板成员声明中的

 template <typename T>  T* GetData();
template T*GetData();
而不是:

 template <typename T>  T* GetData<T>();
template T*GetData();