gpt4 book ai didi

c++ - 请求从 'KanjiCard*' 到非标量类型 'KanjiCard' 的转换(自定义枚举)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:53 27 4
gpt4 key购买 nike

好的,我已经尝试使用 Google-sensei 并在此网站上四处搜索,虽然我发现了很多关于此错误的帖子,但我还没有找到任何解决枚举的帖子。此外,我所看到的所有问题要么是有人试图将一种类型分配给另一种类型,要么是对"new"的不当使用,等等。据我所知,在这种情况下情况并非如此。

如标题中所述,在尝试使用 g++ 编译我正在处理的程序时,出现错误conversion from 'KanjiCard*' to non-scalar type 'KanjiCard' requested .

我有一个名为 KanjiCard 的类,它有这个公开定义的枚举:

enum KanjiCardType {
KANJI_CARD = 1,
KEYWORD_CARD = 2
};

类的构造函数定义如下:

    KanjiCard(char *cardText, int cardTextLength, int cardWidth, int cardHeight,
int cardX, int cardY, KanjiCardType cardType, SDL_Color textColor);

(我使用的是 char* 而不是 std::string,因为这样更容易处理我正在使用的库。)

我这样调用它来创建新卡片(这是出现错误的地方):

KanjiCard currentCard = new KanjiCard(kanji_line, strlen(kanji_line), 
CARD_WIDTH, CARD_HEIGHT, xPos, yPos, cardType, textColor);

cardType 定义如下:KanjiCard::KanjiCardType cardType = KanjiCard::KANJI_CARD;

我最初只是尝试传入 KanjiCard::KANJI_CARD ,其中 cardType 现在在构造函数调用中,但我遇到了那个错误,所以我一直在尝试一切我可以考虑尝试让它工作,包括尝试将构造函数中的 cardType 参数切换为 *cardType&cardType 并搞乱在调用中也使用 cardType 类型,但无济于事。

据我所知,cardType 不是一个指针,所以我真的不明白为什么我会收到这条消息。任何帮助将不胜感激,因为我已经无计可施了。

编辑:我还应该提到,我还尝试将枚举从类中拉出(当然,还删除了 KanjiCard:: 前言),但仍然有同样的问题。

最佳答案

问题不在于cardType;它是 currentCard。你写了这个:

KanjiCard currentCard = new KanjiCard(...

这是将指针分配给非指针类型。你可能是这个意思:

KanjiCard *currentCard = new KanjiCard(...

...或者您的意思可能是:

KanjiCard currentCard(...

我的前者建议会在堆上分配一个KanjiCardcurrentCard 将指向 KanjiCard。后者将在堆栈上分配它。它 KanjiCard

前者您必须手动删除。后者不需要被deleted;它在它声明的范围内有效,一旦超出范围,它就无效。

前者可以使用->访问成员。后者您可以访问使用 ..

的成员

关于c++ - 请求从 'KanjiCard*' 到非标量类型 'KanjiCard' 的转换(自定义枚举),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062113/

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