首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

_ConnectionPtr不能惠存list吗

2013-09-14 
_ConnectionPtr不能存入list吗_ConnectionPtr是连接数据库的对象_ConnectionPtr tempConnlist_Connectio

_ConnectionPtr不能存入list吗
_ConnectionPtr是连接数据库的对象
_ConnectionPtr tempConn;

list<_ConnectionPtr> connlist;//数据库连接池 存入list
connlist.push_back(tempConn);
会报错
d:\microsoft visual studio 8\vc\include\list(1170) : error C2664: “std::allocator<_Ty>::construct”: 不能将参数 1 从“_Connection **”转换为“_com_ptr_t<_IIID> *”

vector<_ConnectionPtr> vs;
vs.push_back(tempConn);
能正常编译

_ConnectionPtr为什么不能用list去存储呢 vs 数据库连接池 数据库
[解决办法]

引用:
环境是vs2005  我只是模拟出错的地方 简化代码 所以临时改的啊

因为你这个问题奇怪,所以需要看真正的代码,不是你模拟的,简化的,避免简化的过程中不经意把导致错误的原因弄没了。
下面是我写的一个版本,基本就是复制粘贴 #5 的代码,外加一些必要的文件。
在 vs2010 里面编译运行都可以,hr = open 那句会挂掉,我猜是我本地配置的原因,不过这不是本贴的重点。

#include <list>
#include <vector>
using namespace std;

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")

_ConnectionPtr InitConnection()
{
 list<_ConnectionPtr> lc;
 vector<_ConnectionPtr> vc;
 CoInitialize(NULL);
 _ConnectionPtr m_pConnection;
 try
 {
  HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
  if(SUCCEEDED(hr))
  {
   // hr = m_pConnection->Open("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=mysql;USER=root; PASSWORD=305004;OPTION=3;","","",adModeUnknown);
  }
 }
 catch(exception&)
 {
  return NULL;
 }
 lc.push_back(m_pConnection);
 vc.push_back(m_pConnection);
 return m_pConnection;
}

int main ()
{
}

热点排行