错误:我们在调用抛出的代码片段异常时出现以下错误:读取访问冲突。std::_Vector_alloc > >::_Myend(...)返回0xC。
bool _Has_unused_capacity() const _NOEXCEPT
{ // micro-optimization for capacity() != size()
return (this->_Myend() != this->_Mylast());
}代码片段:错误:我们在调用代码片段异常抛出:读取访问冲突时出现以下错误。std::_Vector_alloc > >::_Myend(...)返回0xC。
bool _Has_unused_capacity() const _NOEXCEPT
{ // micro-optimization for capacity() != size()
return (this->_Myend() != this->_Mylast());
}
class A
{
public:
class B *objTRANSACTIONID;
};
// second class
class B {
public:
std::vector<class C * >TRANSACTIONID;
};
// Third class
class C {
public:
std::string *APPLICATIONID;
std::string *CREATEDBY;
};
// C++ Code
int main()
{
A *aObject =new A();
C *DNINFO = new C();
std::string FieldName = "UserType";
DNINFO->APPLICATIONID = &FieldName;
DNINFO->CREATEDBY = &FieldName;
// Throws error as “unused capacity” for vector.
aObject->objTRANSACTIONID->TRANSACTIONID.push_back(DNINFO);
}发布于 2018-11-23 19:44:43
您的A对象具有未初始化的objTRANSACTIONID,没有B对象可将DNINFO推送到其TRANSACTIONID中。
如果可以,请不要在这里使用指针和new
// Third class
class C {
public:
std::string APPLICATIONID;
std::string CREATEDBY;
};
// second class
class B {
public:
std::vector<C>TRANSACTIONID;
};
class A
{
public:
B objTRANSACTIONID;
};
// C++ Code
int main()
{
A aObject;
C DNINFO;
std::string FieldName = "UserType";
DNINFO->APPLICATIONID = FieldName;
DNINFO->CREATEDBY = FieldName;
aObject.objTRANSACTIONID.TRANSACTIONID.push_back(DNINFO);
}显然,您的类是由工具生成的,因此在这种情况下,您必须分配一个B。注意,这个工具应该告诉你什么时候(或者是否) deletes的东西。如果不是这样,那就丢掉这个工具,自己编写合理的类。
// C++ Code
int main()
{
A aObject;
aObject.objTRANSACTIONID = new B;
C * DNINFO = new C;
DNINFO->APPLICATIONID = new std::string("UserType"); // have to assume owning raw pointer
DNINFO->CREATEDBY = new std::string("UserType"); // have to assume owning raw pointer
aObject.objTRANSACTIONID->TRANSACTIONID.push_back(DNINFO);
}https://stackoverflow.com/questions/53444452
复制相似问题