读书人

关于MFC和STL联合编程的有关问题

发布时间: 2012-02-23 22:01:35 作者: rapoo

求助关于MFC和STL联合编程的问题
我想用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的对象只能在一个函数中存活,不知有什么解决的办法.
我的邮箱:zhj_work@hotmail.com,有空多交流


[解决办法]
首先是不理解
const auto_ptr <MyClass> m_obj;
直接deque <MyStruct> m_struct_deq;不行吗
使用队列的指针看不出什么好处.


MyDoc::MyDoc() : m_obj(new MyClass)//这里得到了一个空队列
{...}

m_obj.get()-> assign(1, newMyStruct);//在一个空队列上的赋值操作,出错不奇怪.

这样试一下
m_obj-> pushback(newMyStruct);

读书人网 >C++

热点推荐