Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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
C++ 链表不';当我试图提取第一个元素时,它不起作用_C++ - Fatal编程技术网

C++ 链表不';当我试图提取第一个元素时,它不起作用

C++ 链表不';当我试图提取第一个元素时,它不起作用,c++,C++,我正在尝试将我自己的列表用于一个名为“NameCard”的类,该类有两个变量,name和phone 然而,当我使用LFirst(LData pData)时,编译器崩溃了 它使用简单的int类型列表 如有任何反馈,将不胜感激 这是我的密码 类名:ArrayList.cpp int ArrayList::LFirst(LData* pData) { if (numOfData == 0) return 0; curPosition = 0; *pData =

我正在尝试将我自己的列表用于一个名为“NameCard”的类,该类有两个变量,name和phone

然而,当我使用LFirst(LData pData)时,编译器崩溃了

它使用简单的int类型列表

如有任何反馈,将不胜感激

这是我的密码

类名:ArrayList.cpp

int ArrayList::LFirst(LData* pData)
{
    if (numOfData == 0)
        return 0;

    curPosition = 0;
    *pData = arr[0];
    return 1;
}
类名:NameCard.cpp

NameCard::NameCard()
{
}

NameCard::NameCard(const char* iName, const char* iPhone)
{
    strcpy_s(name, iName);
    strcpy_s(phone, iPhone);
}

void NameCard::ShowNameCardInfo()
{
    std::cout << "Name: " << name << ", phone: " << phone << std::endl;
}

int NameCard::NameCompare(char* iName)
{
    return strcmp(name, iName);
}

void NameCard::ChangePhoneNum(char* iPhone)
{
    strcpy_s(phone, iPhone);
}
NameCard::NameCard()
{
}
名片::名片(const char*iName,const char*iPhone)
{
strcpy_s(名称,在南部);
strcpy_s(手机、iPhone);
}
无效名片::ShowNameCardInfo()
{

std::cout崩溃是由于ArrayList::LFirst中的空指针访问造成的。 从您粘贴的有限代码中,我看到没有为pData创建内存。 名片*pData(空)


是否将pData的内存附加到代码中的任何其他位置?

欢迎使用堆栈溢出。请尽快阅读此页,并访问描述和的链接。提供必要的详细信息,包括您的代码、编译器警告和相关错误(如果有),这里的每个人都可以帮助您解决问题。谢谢!我更改了将它转换为--NameCard*pData(nullptr);NameCard nc1(“Tony”,010-1111-2222”);pData=&nc1;---它成功了!但是,你知道我如何改进这段代码吗?更具体地说,我在声明pData时如何为它创建内存?你需要使用“new”操作符为pData动态分配内存(new NameCard())-请接受答案,因为它对您来说运行良好。动态分配内存解决了问题。非常感谢!
#include <iostream>
#include "ArrayList.h"
#include "NameCard.h"

int main()
{
    ArrayList list;
    NameCard *pData(NULL);
    NameCard nc1("Alice", "010-1111-2222");
    NameCard nc2("Brandon", "010-2222-3333");
    NameCard nc3("Jack", "010-3333-4444");
    list.LInsert(nc1);
    list.LInsert(nc2);
    list.LInsert(nc3);
    //nc1.ShowNameCardInfo();
    //list.arr[0].ShowNameCardInfo();
    //std::cout << list.LCount() << std::endl;
    int a  = list.LFirst(pData);
    std::cout << a << std::endl;
    //if (list.LFirst(pData))
    //{
    //  pData->ShowNameCardInfo();
    //}
}