我想用MFC和STL结合编程,但在过程中遇到些问题,见你的网页中有auto_ptr的一些内容,请高手帮忙看看有什么解决的办法,问题描述如下:
第一步: 我用先定义了一个结构MyStruct,然后用STL的deque模板定义了一个类
typedef deque<MyStruct> MyClass
第二步: 我用MFC 的document-view结构建立了一个程序框架,在MyDoc类中我添加了一个智能指针
class MyDoc
{
......
const auto_ptr <MyClass> m_obj;
void MyFunc();
......
}
在MyDoc类的构造函数中添加了他的初始化
MyDoc::MyDoc() : auto_ptr <MyClass> m_obj(new MyClass)
{...}
(本写法参考<C++标准程序库>侯捷),
第三步: 我在MyDoc的成员函数MyFunc()中想给m_obj所拥有的对象添加具体内容:
void MyFunc()
{
......
MyStruct newMyStruct;
m_obj.get()->assign(1, newMyStruct);//出错
......
}
但每次程序执行到assign的时候就出错退出,感觉是构造函数中对m_obj的初始化没有起作用.
且从另外一些实验中,我感觉STL的对象只能在一个函数中存活,不知有什么解决的办法.
,有空多交流
第一步: 我用先定义了一个结构MyStruct,然后用STL的deque模板定义了一个类
typedef deque<MyStruct> MyClass
第二步: 我用MFC 的document-view结构建立了一个程序框架,在MyDoc类中我添加了一个智能指针
class MyDoc
{
......
const auto_ptr <MyClass> m_obj;
void MyFunc();
......
}
在MyDoc类的构造函数中添加了他的初始化
MyDoc::MyDoc() : auto_ptr <MyClass> m_obj(new MyClass)
{...}
(本写法参考<C++标准程序库>侯捷),
第三步: 我在MyDoc的成员函数MyFunc()中想给m_obj所拥有的对象添加具体内容:
void MyFunc()
{
......
MyStruct newMyStruct;
m_obj.get()->assign(1, newMyStruct);//出错
......
}
但每次程序执行到assign的时候就出错退出,感觉是构造函数中对m_obj的初始化没有起作用.
且从另外一些实验中,我感觉STL的对象只能在一个函数中存活,不知有什么解决的办法.
,有空多交流
解决方案 »
- 如何调试带有中断(ctrl+C)的程序
- 请教各位大侠,如何取得桌面的分辨率??谢谢!!
- 我想实现跟踪,怎样调出VS.net 2003的调用堆栈页面?
- 如何自画桌面的子窗体
- 我想让程序一开机执行,是要修改注册表,还是应该怎么做?
- xt_jat(桑巴) 请您针对"2002-01-13"具体说一下怎样操作?
- 请教:如何绘制动态的棒图
- 为什么在非ui线程可以修改CListCtrl的值?
- 关于CPropertySheet的很菜的问题
- 如何将CString str="4",转化成整形4,然后付给一个整形变量
- webBrowser控件如何实现类似CEdit::LineScroll功能?
- ADO中,存图片到SQL SERVER数据库,发生错误,谁能帮我看下代码,哪里出错了
直接写成:
MyDoc::MyDoc() : m_obj()//初始化工作放在MyClass模板类里
//////////////////////////////////////////////////////////
不是很懂,仅供参考。
MyDoc::MyDoc() : m_obj(new MyClass)写这里时写错了,不过问题不在这里