- 论坛徽章:
- 0
|
template<class T>
class ResourceCloser {
protected:
T _p;
public:
ResourceCloser(T p = NULL) : _p(p) {
}
void attach(T p) {
if (_p) release();
_p = p;
}
virtual void release() = 0;
};
class ResultSet : public ResourceCloser<oracle:: occi::ResultSet*> {
oracle:: occi::Statement* _pstmt;
std::map<std::string, unsigned int> _map;
public:
ResultSet(oracle:: occi::ResultSet* p = NULL)
: ResourceCloser<oracle:: occi::ResultSet*>(p) {
oracle:: occi:: Statement* pstmt = p->getStatement();
if (_pstmt != pstmt) {
_pstmt = pstmt;
}
_map.clear();
}
~ResultSet() {
if (_p) release();
}
virtual void release() {
_pstmt->closeResultSet(_p);
_p = NULL;
}
}
如果是模板类继承的话,好像是occi::ResultSet里面的方法,例如next()等就看不到了。
如果是把下面的代码加上,就可以用。
virtual bool next(){
return _p->next();
}
是不是模板类的继承会出现上述问题??
还有,怎么解决呢?
[ 本帖最后由 wanyouyinli 于 2007-7-30 10:49 编辑 ] |
|