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

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

2012-02-23 
求助关于MFC和STL联合编程的问题我想用MFC和STL结合编程,但在过程中遇到些问题,见你的网页中有auto_ptr的

求助关于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);

热点排行