Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mfc CList';s AddTail()断言错误_Mfc_Overloading_Assertion_Clist - Fatal编程技术网

Mfc CList';s AddTail()断言错误

Mfc CList';s AddTail()断言错误,mfc,overloading,assertion,clist,Mfc,Overloading,Assertion,Clist,我试图在MFC中创建一个二维列表,以便保存和处理一些int和CString数据。所以,我试过这样的方法: #include "A.h" //A.cpp A::A() { } A::~A() { } //********************** #pragma once // A.h class A: public CObject { public: A(); virtual ~A(); int ID; CString label; }; //**

我试图在MFC中创建一个二维列表,以便保存和处理一些int和CString数据。所以,我试过这样的方法:

#include "A.h"
//A.cpp

A::A()
{
}

A::~A()
{
}

//**********************

#pragma once
// A.h
class A: public CObject
{
public:
    A();
    virtual ~A();

    int ID;
    CString label;

};

//**********************

#include "A.h"
#pragma once

// B.h

class B : public CObject
{
public:
    B();
    virtual ~B();

    int anotherID;
    CString anotherLabel;
    CList<A*, A*&> * AList;
    CList<CString, CString&> * TestList;
};

//Note: B.cpp is pretty much the same as A.cpp

//*********************

//C.cpp

void C::Foo()
{
    B * b = new B;
    A * a = new A;
    a->ID = 1;
    a->label = L"something";
    b->AList->AddTail(a); //Assertion error!
    CString aux = L"another thing";
    b->TestList->AddTail(aux); //Assertion error!
}
#包括“A.h”
//A.cpp
A::A()
{
}
A::~A()
{
}
//**********************
#布拉格语一次
//A.h
A类:公共项目
{
公众:
A();
虚拟~A();
int-ID;
CString标签;
};
//**********************
#包括“A.h”
#布拉格语一次
//B.h
B类:公共项目
{
公众:
B();
虚拟~B();
内膏体;
另一个标签;
克莱斯特主义者;
CList*TestList;
};
//注意:B.cpp与A.cpp几乎相同
//*********************
//C.cpp
void C::Foo()
{
B*B=新的B;
A*A=新的A;
a->ID=1;
a->label=L“某物”;
b->AList->AddTail(a);//断言错误!
CString aux=L“另一件事”;
b->TestList->AddTail(辅助);//断言错误!
}
问题是:当我尝试使用AddList()方法时,我收到错误“访问冲突读取位置”。我首先认为问题与CObject派生类有关,但我不确定这是否是真正的问题。我也尝试了一些新的和删除重载,但问题变得更糟。
有什么想法吗?

这两个列表元素都声明为指针,因此您需要分配它们或将它们声明为指针

CList<A*, A*&> AList;              // without the "*"
CList<CString, CString&> TestList; // without the "*"
CList列表;//没有“*”
CList TestList;//没有“*”