【发布时间】:2011-04-06 22:20:08
【问题描述】:
我收到一个Assertion failed 错误声明Expression: invalid null pointer,它指向c:\program files\microsoft visual studio 10.0\vc\include\xstring line:930。
这是我的代码:
void main(void)
{
// fillMap() fills map with data from txtfile and returns map<char,int>
map<char, int> myMap = fillMap("file.txt"); // <- takes a string
MyClass *myObject;
// Code reaches here fine
myObject= new MyClass(myMap); // this line causes the error
// Does not get to here
}
在导致错误的那一行,我可以将constructor() 留空,然后说ptr = new MyClass();,仍然会得到同样的错误。无论如何,我认为这与我的构造函数有关。
在 MyClass 中,构造函数定义为 MyClass(char=' ', int=0)。如果我不给它们值,那么我会收到 No default constructor 错误。
那么,谁能告诉我如何在 Visual Studio 2010 中跟踪此错误,或提供可能的解决方案来解释为什么会出现这些问题?
PS,它不会让我创建不是指针的新对象,Error: No operator "=" matches these operands。
感谢您的帮助。
编辑:如果有帮助,这里是 xstring 的第 930 行:
_Myt& assign(const _Elem *_Ptr)
{ // assign [_Ptr, <null>)
_DEBUG_POINTER(_Ptr); //930
return (assign(_Ptr, _Traits::length(_Ptr)));
}
【问题讨论】:
-
你能把那个构造函数的代码贴出来吗?
-
(char,int)构造函数不是您调用的那个。有没有接受map<char,int>的构造函数?