c++ - 类不是类型

标签 c++

我收到一条错误消息“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/

相关文章:

c++ - Visual Studio 2010 或 C/C++ 性能监视器

c++ - 如何将字符串数组转换为char**

c++ - 如何读取 PCIe 总线上使用的带宽?

C++:如何使一组派生类能够访问一个类的私有(private)成员?

c++:何时销毁临时对象

c++ - NetBeans 在外部终端运行

c++ - 为什么我的 Threaded Thrift 调用速度很慢?

c++ - 将字符数组转换为整数

c++ - 基于通用 char[] 的存储并避免与严格别名相关的 UB

c++ - 访问共享内存映射文件 View 的数量 (Windows)