首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CList的AddTail()断言错误

CList的AddTail()断言错误
EN

Stack Overflow用户
提问于 2013-08-08 07:57:44
回答 1查看 463关注 0票数 0

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

代码语言:javascript
运行
复制
#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()方法时,我收到错误消息"Access violation reading“。我首先认为这个问题与CObject派生类有关,但我不确定这是否是真正的问题。我也尝试做一些新的和删除重载,但问题变得更糟。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-08 14:39:35

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

代码语言:javascript
运行
复制
CList<A*, A*&> AList;              // without the "*"
CList<CString, CString&> TestList; // without the "*"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18115773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档