0
일부 int 및 CString 데이터를 저장하고 작업하기 위해 MFC에서 2 차원 목록을 만들려고했습니다. 그래서, 이런 식으로 뭔가를 시도했다 :CList의 AddTail() 어설 션 오류
#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!
}
여기에 문제가있다 : 나는 AddList() 메소드를 사용하려고하면, 나는 오류 "액세스 위반 읽기 위치"를받을 수 있습니다. 처음에는이 문제가 CObject 파생 클래스와 관련이 있다고 생각했지만 이것이 실제 문제인지 여부는 확실하지 않습니다. 또한 새로운 오버로드를 삭제하려고했지만 문제는 더욱 심각해졌습니다. 아이디어가 있으십니까?