将struct作为参数赋给函数不起作用

时间:2016-10-23 23:13:23

标签: c++ struct doubly-linked-list

我创建了一个双链表结构,我想使用函数duplaLista来连接节点和插入值。我实际上在别人的问题中找到了如何将struct作为函数调用中的参数。但它不适合我(不允许不完整类型)。我也读过这个问题的答案,但我不明白我做错了什么,因为我看到应该这样做,而不是我完全理解它?有人能告诉我什么是错的,并解释我为什么?

#include "DoubleList.h"
#include<iostream>
#include<stdio.h>
#include"string"
using namespace std;

struct Cvor
{
    Cvor *head;
    Cvor *tail;
    char vred;

    Cvor(const char &value, Cvor *prev = NULL, Cvor *next = NULL) : vred(value),
                                                                    head(next), tail(prev)
    {}

};

void duplaLista(Cvor *cvor)
{

}


int main(int argc, char *argv[])
{   
    Cvor cvor;

    duplaLista(cvor);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

void duplaLista(Cvor *cvor)

编译器读取要从头到尾编译的程序。此时,未定义Cvor。您对此课程的定义稍后会出现。

在C ++中,必须在使用之前定义类,模板,函数和其他所有内容。

在此处使用之前,您需要将类的定义移出main()函数并移入全局作用域。

答案 1 :(得分:0)

这里有两个错误。首先,由于您没有为Cvor定义默认构造函数,除非您提供构造Cvor的最小基本参数,main中的声明(即Cvor cvor)将失败。你需要给它一些示例const char&amp;能够构建它。完成后,您需要修复为duplaLista提供的错误类型的参数。更正后,您的主要功能应如下所示。参数&#39; A&#39;我在下面给出的只是一个示例初始值。用你认为有用的任何东西替换它。

int main(int argc, char *argv[])
{   
    Cvor cvor('A');
    duplaLista(&cvor);
    return 0;
}