获得;应为类或命名空间“0”; 在近十年没有弄错它的情况下,我决定接受C++,我在一些代码上遇到了问题,而且很难理解错误。我看到了几个相关的问题,并且。还有花几个小时研究其他的,但我还是搞不懂

获得;应为类或命名空间“0”; 在近十年没有弄错它的情况下,我决定接受C++,我在一些代码上遇到了问题,而且很难理解错误。我看到了几个相关的问题,并且。还有花几个小时研究其他的,但我还是搞不懂,c++,stdvector,C++,Stdvector,main window.hpp class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); std::vector<Card> cards; // Events: public slots: void shuffle(); private: Ui::Main

main window.hpp

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    std::vector<Card> cards;

    // Events:
public slots:
    void shuffle();

private:
    Ui::MainWindow *ui;
};
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow) {

    ...

    // Spades
    cards.push_back(Card(Suit::SPADES, Value::ACE)); // <- getting the errors here
    cards.push_back(Card(Suit::SPADES, Value::TWO)); // <-
}

我想我已经知道你做错了什么:)

你应该发布的是下面的代码,而不是正确的部分。这就是我们诊断问题所需要看到的一切。你的问题与Qt等无关。真的:最小化是关键。它节省了每个人的时间。你的和我们的

#include <vector>

enum Suit { SPADES };
enum Value { ACE, TWO };

class Card {
public:
   Card(Suit, Value) {}
};

int main()
{
   std::vector<Card> cards;
   // Correct
   cards.push_back(Card(SPADES, ACE));
   cards.push_back(Card(SPADES, TWO));
   // Wrong since Suit and Value are not classes nor namespaces,
   // they are merely enum tags.
   cards.push_back(Card(Suit::SPADES, Value::ACE));
   cards.push_back(Card(Suit::SPADES, Value::TWO));
   return 0;
}
#包括
枚举集{黑桃};
枚举值{ACE,TWO};
班级卡{
公众:
卡片(套装、价值){}
};
int main()
{
向量卡;
//正确的
牌。推回(牌(黑桃,王牌));
扑克牌。推回(扑克牌(黑桃,两张));
//错误,因为Suit和Value既不是类也不是名称空间,
//它们只是枚举标记。
卡牌。推回(卡牌(套装:黑桃,价值:ACE));
扑克牌。推回(扑克牌(套装:黑桃,价值:两张));
返回0;
}

还感谢您提供关于真正需要什么的提示。。级别越低,需要显示的代码就越多……)哦,这就是C#enum成语(或多或少):-)。
#include <vector>

enum Suit { SPADES };
enum Value { ACE, TWO };

class Card {
public:
   Card(Suit, Value) {}
};

int main()
{
   std::vector<Card> cards;
   // Correct
   cards.push_back(Card(SPADES, ACE));
   cards.push_back(Card(SPADES, TWO));
   // Wrong since Suit and Value are not classes nor namespaces,
   // they are merely enum tags.
   cards.push_back(Card(Suit::SPADES, Value::ACE));
   cards.push_back(Card(Suit::SPADES, Value::TWO));
   return 0;
}