C++ ';的左侧;。色标';必须具有类/结构/联合

C++ ';的左侧;。色标';必须具有类/结构/联合,c++,class,struct,compiler-errors,C++,Class,Struct,Compiler Errors,试图访问类Hand中的结构成员时出现以下错误:“.colorBet”左侧的错误:C2228:必须具有class/struct/union 手 #ifndef HAND_H #define HAND_H #include"deck.h" #include <QVector> #include <QString> struct street { QString colorBet; int colorBetSize; int payout;

试图访问类Hand中的结构成员时出现以下错误:“.colorBet”左侧的错误:C2228:必须具有class/struct/union

    #ifndef HAND_H
#define HAND_H

#include"deck.h"
#include <QVector>
#include <QString>

struct street
{
    QString colorBet;
    int colorBetSize;
    int payout;
};

class Hand
{
    QVector<card> cardVector;

public:

    Hand(QVector<card> vCards);

    bool isFlush();
    bool isAllRed();
    bool isAllBlack();

    street street1;
    street street2;
    street street3;

};

#endif // HAND_H

您必须声明Hand类型的对象:

Hand hand;
hand.street1;
...

您还可以将街道字段声明为静态。

您必须声明Hand类型的对象:

Hand hand;
hand.street1;
...

您还可以将街道字段声明为静态。

Hand::street1.colorBet=“Red”
&其他成员是非法的,因为
Hand::street1
不是
静态的
类成员(我不是说它应该,拥有
静态的
成员应该是一个逻辑决定,而不是让代码编译的事情)

您正在尝试修改的
Hand
对象是什么,例如,
street1betradeclicked
?你有手上的
物品吗?您需要任何
手动
对象吗?你用那种方法创建它们吗?外面

我指出了错误,但在我看来,重要的问题不是代码没有编译,而是:

对于C++,你似乎没有把握,也许你应该从更简单的东西开始。

  • 你没有一个清晰的逻辑设置


  • Hand::street1.colorBet=“Red”
    &其他成员是非法的,因为
    Hand::street1
    不是
    静态的
    类成员(我不是说它应该,拥有
    静态的
    成员应该是一个逻辑决定,而不是让代码编译的事情)

    您正在尝试修改的
    Hand
    对象是什么,例如,
    street1betradeclicked
    ?你有手上的
    物品吗?您需要任何
    手动
    对象吗?你用那种方法创建它们吗?外面

    我指出了错误,但在我看来,重要的问题不是代码没有编译,而是:

    对于C++,你似乎没有把握,也许你应该从更简单的东西开始。

  • 你没有一个清晰的逻辑设置


  • 当您像这样访问
    street1
    时,
    street1
    应该是
    Hand
    的静态字段

    如果每个
    Hand
    都可以有自己的
    street1
    对象,则应该访问对象的
    street1
    字段,而不是静态字段。 如果希望
    Hand
    的所有实例共享相同的
    street1
    ,则应将
    street1
    设置为静态

    <>你不理解这些概念,从阅读你的其他问题(),我可以看出你不知道C++足够写这个程序。我建议你先读一本关于C++的书,或者在开始你自己的项目之前,用其他的方式学习C++。 例如:

    Hand hand1 = getRandomHand();
    Hand hand2 = getRandomHand();
    
    hand1.street1.colorBet="Red";
    hand2.street1.colorBet="Black";
    

    当您像这样访问
    street1
    时,
    street1
    应该是
    Hand
    的静态字段

    如果每个
    Hand
    都可以有自己的
    street1
    对象,则应该访问对象的
    street1
    字段,而不是静态字段。 如果希望
    Hand
    的所有实例共享相同的
    street1
    ,则应将
    street1
    设置为静态

    <>你不理解这些概念,从阅读你的其他问题(),我可以看出你不知道C++足够写这个程序。我建议你先读一本关于C++的书,或者在开始你自己的项目之前,用其他的方式学习C++。 例如:

    Hand hand1 = getRandomHand();
    Hand hand2 = getRandomHand();
    
    hand1.street1.colorBet="Red";
    hand2.street1.colorBet="Black";
    

    street1
    Hand
    的非静态成员,因此您需要通过
    Hand
    对象访问它……您的意思是使
    street1
    等成为静态的吗?
    street1
    Hand
    的非静态成员,因此,您需要通过
    对象访问它…您的意思是使
    街道1
    等成为静态的吗?首先是的,我没有把握,我这样做是为了学习。我正在使用hand对象来分析整个手,如hand.isFlush。也许街道应该是一个阶级,而不是一个阶级struct@user1846123我建议你先学习C++,然后再开始QT。最好的方法是读一本介绍性的书。@user1846123不管它是类还是结构。你说的是手
    ,但你在代码中没有手。您只定义了类,但没有创建任何对象。那么,您希望如何使用手牌?交易完成后,所发的牌将被定义为手牌。所以“handhand1(QVector);”。然后我可以运行“hand1.isFlush()”等。我现在正在尝试实现下注,即在所发的每张卡/街道上下注。我想“hand1.street1.colorBet”是有道理的。我很难建立起这样的逻辑。正如您所知,我对编程相当陌生。@user1846123所以现在放下Qt,拿起一本书。。。你为什么不接受合理的建议?首先是的,我没有把握,我这样做是为了学习。我正在使用hand对象来分析整个手,如hand.isFlush。也许街道应该是一个阶级,而不是一个阶级struct@user1846123我建议你先学习C++,然后再开始QT。最好的方法是读一本介绍性的书。@user1846123不管它是类还是结构。你说的是手
    ,但你在代码中没有手。您只定义了类,但没有创建任何对象。那么,您希望如何使用手牌?交易完成后,所发的牌将被定义为手牌。所以“handhand1(QVector);”。然后我可以运行“hand1.isFlush()”等。我现在正在尝试实现下注,即在所发的每张卡/街道上下注。我想“hand1.street1.colorBet”是有道理的。我很难建立起这样的逻辑。正如您所知,我对编程相当陌生。@user1846123所以现在放下Qt,拿起一本书。。。你为什么不接受合理的建议?