有模板类
template <class T>
class Dao { ... }
和 几个类继承自它。 (BarDao 和 FooDao)
然后,还有另一个名为 Server 的类,它必须使用动态计算出的 BarDao 或 FooDao。
所以,
class Server {
Dao * dao;
Server(Dao * dao) {this->dao = dao;}
}
我收到一个编译错误,提示没有参数。 我怎样才能避免出现此错误?
添加。
我使用模板的原因是为了完成以下任务:
我想要一个有方法的抽象类
T 计算();
BarDao 有一个方法
SomeClass compute()
;FooDao 有一个方法
SomeOtherClass compute()
;
有没有比使用模板更好的方法?
抱歉,如果问题很愚蠢。我是 C++ 初学者。
最佳答案
Dao
不是一个具体的类,它是一个类模板。 Dao* dao
不是指不完整的类型,而是指模板。它需要合格。
你说你希望它自动解析,所以我们只是重复你在 Dao 中所做的事情。
template<class T>
class Dao
{
T t_;
public:
Dao(T t) : t_(t) {}
};
template<class T>
class Server
{
using dao_t = Dao<T>;
dao_t* dao_;
public:
Server(dao_t* dao) : dao_(dao) {}
};
int main() {
Server<int> server(nullptr);
return 0;
}
关于c++模板不带参数使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39760445/