C2143 在'*' & C 4430 缺少类型指定符 - 假设为 int,注意 c++ 不支持 default-int

问题描述 投票:-1回答:2

这段代码接收多个输入文件,然后使用getline函数将输入文件中的行放入一个链接列表中。我猜想在创建链接列表的过程中出现了问题,因为它给出了一个错误信息 "错误C2039:'down':不是'Functions'的成员" 以及标题上的指定错误。我不知道 C2130 & C4430 错误。

#include <iostream>
#include <fstream>
#include <string>
#include "strutils.h" 
using namespace std;

struct Functions
{
    string fname;
    Functions *right;
    Commands  *down;
};
struct Commands
{
    string command;
    Commands *next;
};

Functions *head = nullptr;
Functions *temp = nullptr;

void printLinkedList()
{
    Functions *ptr = head;
    while (ptr != nullptr)
    {
        cout << ptr->fname << endl;
        while (ptr->down != nullptr)
        {
            cout << ptr->down->command + " ";
            ptr->down = ptr->down->next;
        }
        cout << endl;
        ptr = ptr->right;
    }   
}
c++ pointers linked-list
2个回答
4
投票

你需要向前声明 Commands 结构。

struct Commands;

struct Functions
{
    string fname;
    Functions *right;
    Commands  *down;
};
struct Commands
{
    string command;
    Commands *next;
};

4
投票

增加一个正向声明: Commands 之前 Functions:

struct Commands;
struct Functions {
   ...
}
© www.soinside.com 2019 - 2024. All rights reserved.