将struct作为函数的参数是行不通的

Give struct as parameter to a function doesnt work

本文关键字:参数 行不通 函数 struct      更新时间:2023-10-16

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

#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;
}
void duplaLista(Cvor *cvor)

编译器从开始到结束读取要编译的程序。此时,Cvor还没有定义。这个类的定义稍后会出现。

在c++中,类、模板、函数和其他所有东西都必须在使用之前定义。

在这里使用该类之前,需要将该类的定义从main()函数移到全局作用域中。

这里有两个错误。首先,由于没有为Cvor定义默认构造函数,除非您提供了构造Cvor所需的最小基本参数,否则main中的声明(即:Cvor (Cvor)会失败。你需要给它一些样本const char &为了能够构建它。完成后,需要修复提供给duplaLista的参数的不正确类型。修正后,您的main函数应该如下所示。我在下面给出的参数A只是一个初始值。用你认为有用的东西代替。

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