你好我是一名经理
Color.h中的颜色类 - 包含在Manager.h之前
`Manager.h
class ColorEntry
{
private:
const char* m_pszName;
Color m_colColor;
public:
inline const char* GetName(void) const { return m_pszName; }
inline void SetName(const char* pszName) { m_pszName = pszName; }
inline Color GetColor(void) { return m_colColor; }
inline void SetColor(Color colNew) { m_colColor = colNew; }
};
class CColorManager
{
private:
std::vector<ColorEntry*> m_vecColors;
public:
void Initialize(void);
--etc
}
Manager.cpp
void CColorManager::Initialize(void)
{
AddColor("GUI_Outline", Color(0, 128, 255));
}
void CColorManager::AddColor(char* pszName, Color col)
{
ColorEntry NewCvar;
NewCvar.SetName(pszName);
NewCvar.SetColor(col);
m_vecColors.push_back(&NewCvar); -- crash here
}`
帮助我尝试了许多方法没有工作,我也有另一种方式来做到这一点,但没有颜色,它的工作原理是它的颜色搞砸了吗?
color是一个4字节的类
答案 0 :(得分:1)
这一行
m_vecColors.push_back(安培; NewCvar); - 在这里崩溃
添加局部变量的指针,在AddColor完成后不再有效。你需要在这里添加从调用new
返回的指针,如:
ColorEntry* pNewCvar = new ColorEntry();
// ...
m_vecColors.push_back(pNewCvar);
但是你需要管理它的生命周期,所以最好把这个指针放到std :: shared_ptr。