我对模板编程很新,我找不到任何相关的问题,抱歉,如果已经存在类似的问题。
我有我的模板类
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;
如何从 var 调用 bar()方法?
答案 0 :(得分:1)
要调用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();
}
BTW在Dobbs博士期刊中提醒过Swaine's Flames的任何其他老人?