gpt4 book ai didi

c++ - 类不是类型

转载 作者:行者123 更新时间:2023-11-30 00:48:51 25 4
gpt4 key购买 nike

我收到一条错误消息“RentedMediaItem 不是一种类型。 Hoverever 它说当我将类用作参数时而不是当我将它用作对象时。

inventory.h 我得到错误的地方。

#ifndef INVENTORY_H
#define INVENTORY_H

#include <QString>
#include "rentedmediaitem.h"
#include "historypurchase.h"
#include "supportticket.h"

class RentedMediaItem;

class Inventory
{
private:
RentedMediaItem * RentedMediaItem; // No error
MediaItem** mediaItems;
HistoryPurchase* historyPurchase;
SupportTicket* tickets;
public:
Inventory();//Not implemented
void supportTicket(QString Text); //Not implemented
QString* getAllSupportTickets(); //Not implemented
QString supportTicket(int index); //Not implemented
void mediaItem(int index); //Not implemented
QString* getAllRentedMediaItems(); //Not implemented
HistoryPurchase* getPurchaseHistory(); //Not implemented
void useMedia(int index); //Not implemented
void addMediaItem(RentedMediaItem* rentedMediaItem); //ERROR
};

#endif // INVENTORY_H

rentedmediaitem.h 我在其中声明 RentedMediaItem 类。

#ifndef RENTEDMEDIAITEM_H
#define RENTEDMEDIAITEM_H

#include "mediaitem.h"
#include <time.h>

class RentedMediaItem
{
private:
unsigned int endDate;
MediaItem* media;

public:
RentedMediaItem();
MediaItem* getMedia();
int getEndDate();
void initialize(unsigned int time);
void use();
};

#endif // RENTEDMEDIAITEM_H

最佳答案

您偶然发现了一个典型的姓名隐藏案例。


由于您声明的 Inventory::RentedMediaItem 与类型本身具有相同的名称,因此在该声明之后进行的查找将找到成员变量,而不是类型本身。

有多种方法可以解决这个问题,但最简单的方法是将您的成员变量命名为其他名称(与类型名称不冲突)。


例子

struct Obj {
/* .. */
};
int main () {
Obj Obj; // declare a variable named `Obj` of type `Obj`
Obj x; // ill-formed, `Obj` is the previously declared variable
struct Obj y; // ok, using an elaborate-type-specifier
}

关于c++ - 类不是类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30505401/

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