push_back的问题

degree_37 2011-11-13 09:25:42
同样的数据结构,为什么类中的数据push_back就出错,而在函数里声明的push_back就不出错呢?

		

// 头文件中的声明
std::vector<C3dMaterial*> m_MaterialList;

bool SomeClass::LoadMtlData(CString filename)
{
std::vector<C3dMaterial*> ab;

m_TextureMapArray.clear();
m_MaterialList.clear();
CStdioFile mFile;
CFileException e;

if (!mFile.Open(filename, CFile::modeRead|CFile::typeText, &e))
{
TCHAR szError[1024];
e.GetErrorMessage(szError, 1024);
AfxMessageBox(szError);
return false;
}
mFile.SeekToBegin();
CString strTemp;
int tempIndex;
CString mtlName;
CString photoName;
C3dMaterial* pcurMtl=NULL;
float color[3];


while (mFile.ReadString(strTemp))
{
strTemp.Trim();
switch(char(strTemp.GetAt(0)))
{
case '#':
break;
case 'n':
{
tempIndex = strTemp.GetLength();
mtlName = strTemp.Right(tempIndex-7);

pcurMtl = C3dMaterial::Create(mtlName,
0.f, 0.f, 0.f, 1.00f,
0.f, 0.f, 0.f, 1.00f,
0.f, 0.f, 0.f, 1.00f,
0.f, 0.f, 0.f, 1.00f,
0.0f,
0.0f,
0.0f,
1.f);
ab.push_back(pcurMtl); //不出错
m_MaterialList.push_back( pcurMtl ); //出错?
}
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
追求执着 2011-11-14
  • 打赏
  • 举报
回复
你全局对象去保存局部对象肯定有问题的撒
qscool1987 2011-11-14
  • 打赏
  • 举报
回复
non-local static object 初始化顺序问题,4楼解释的很清楚,你那不叫声明,你又定义了,然后再CPP文件中导致没有初始化,用extern声明过来就不一样
degree_37 2011-11-14
  • 打赏
  • 举报
回复
检查了拷贝构造函数和operator = 还是出错,4楼的方法可以通过,但是为啥呢
qq120848369 2011-11-13
  • 打赏
  • 举报
回复
出错说明你没有写对operator =,自己检查写没写好。
degree_37 2011-11-13
  • 打赏
  • 举报
回复
编译没错,运行出错,具体停在
template<class _OutIt,
class _Diff,
class _Ty> inline
void __CLRCALL_OR_CDECL _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
_Range_checked_iterator_tag)
{ // copy _Val _Count times through [_First, ...)
for (; 0 < _Count; --_Count, ++_First)
*_First = _Val;//停在这里
}


而且很奇怪的是,

// 头文件中的声明
std::vector<C3dMaterial*> m_MaterialList;

public没错,而private出错!
qq120848369 2011-11-13
  • 打赏
  • 举报
回复
// 头文件中的声明
std::vector<C3dMaterial*> m_MaterialList;


这是定义,不叫声明。

请在.h里写:extern std::vector<C3dMaterial*> m_MaterialList;
并在.cpp里写: std::vector<C3dMaterial*> m_MaterialList;
無_1024 2011-11-13
  • 打赏
  • 举报
回复
有什么问题啊
fthislife 2011-11-13
  • 打赏
  • 举报
回复
出什么错?
qunqun2012 2011-11-13
  • 打赏
  • 举报
回复
不懂,

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧