gpt4 book ai didi

C++:与之前的声明冲突?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:42 25 4
gpt4 key购买 nike

我正在做这个作业,但我总是收到一个显然是以前声明的方法的错误。这是 .h 文件:

#ifndef DLLIST_H
#define DLLIST_H

#include <iostream>
#include <fstream>
#include <cstddef>
#include "DListNode.h"

typedef int ItemType;

class DLList
{
private:
friend std::ostream & operator<< (std::ostream & out, DLList & other);
int size;
int * head;
int * tail;

void _copy(const DLList * toCopy);
void _dealloc();

public:
DLList();
DLList(const DLList & toCopy);

~DLList();

DLList & operator=(const DLList & toCopy);

int size();
void append(ItemType item);
void insert(int index, ItemType item);
ItemType pop(int index);
ItemType pop();
const DListNode & operator[] (int idx);

};

std::ostream & operator<< (std::ostream & out, const DLList & d);

#endif

错误在 int size(); 处被触发,表示它与之前的声明冲突。我知道这通常会因我多次包含此头文件而出现,但我只是看不到它发生在哪里。这些是项目中所有文件的包含语句:

#include "DLList.h" // DLList.cpp
=======================================
#include "DListNode.h" // DListNode.cpp
=======================================
#include <iostream> // DListNode.h
#include <fstream>
#include <cstddef>
=======================================
#include "DLList.h" // This is the main test file
#include "DListNode.h"
#include <iostream>

我可以看到 DListNode.h 在技术上被包含了两次,但 DLList.h 没有被包含超过一次。我只是犯了一个愚蠢的错误而没有看到它吗? (大概是这样)。感谢您的帮助!

最佳答案

这是因为你有一个成员变量,也叫size。您可以通过重命名其中一个来解决此问题。

int size;
...
int size();

关于C++:与之前的声明冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com