C++ 如何在结构中声明类?

C++ 如何在结构中声明类?,c++,C++,这是我的.hpp class playerBat { public: playerBat(int x, int y); sf::RectangleShape *getShape(); void setShape(sf::RectangleShape *Shape); private: sf::RectangleShape shapeBat; }; typedef struct s_game_elements {

这是我的.hpp

class playerBat
{
    public:
        playerBat(int x, int y);
        sf::RectangleShape *getShape();
        void setShape(sf::RectangleShape *Shape);
    private:
        sf::RectangleShape shapeBat;
};

typedef struct s_game_elements
{
    playerBat playerOne(int, int);
    playerBat playerTwo(int, int);
} t_game_elements;
我就是这样初始化它的:

t_game_elements gameElements;

playerBat playerBatOne(0, 200);
playerBat playerBatTwo(790, 200);

gameElements.playerOne = playerBatOne;
gameElements.playerTwo = playerBatTwo;
但编撰者说:

src/main.cpp:14:18: error: reference to non-static member function must be called gameElements.playerOne = playerBatOne;
我做错了什么?
很抱歉,如果这是很明显的事情,但我最近开始学习CPP,我在C中从来没有出现过这个错误。

您的意思似乎是:

typedef struct  s_game_elements
{
    playerBat   playerOne;
    playerBat   playerTwo;
}
否则,在这个typedef声明中,结构有两个函数,而不是playerBat类型的数据成员

typedef struct  s_game_elements
{
    playerBat   playerOne(int, int);
    playerBat   playerTwo(int, int);
}
考虑到有一个打字错误

t_game_elements gameElements;
^^^
typedef声明中早期的typedef名称如下所示

s_game_elements
^^^

playeron
是一个函数。您正在尝试分配一个函数。如果您只需要一个变量(即
playerBat playerne;
),请去掉
(int,int)
参数。我正在尝试将类playerBat分配给我的结构,那么我做错了什么?@cornstales我有一个错误
没有匹配的构造函数来初始化“t_game_元素”(又名“s_game_元素”)
,如果我这样做,如何修复它?如果成员没有默认构造函数,则必须在初始化列表中构造它。谢谢!我的代码中没有输入错误,我只是做了复制/过去的错误:但是我有一个错误我无法理解,它是's_game_elements'的
隐式默认构造函数必须显式初始化没有默认构造函数的成员'playeron',有什么想法吗?@DimitriDanilov Class playerBat没有默认构造函数。在这种情况下,另一个类无法初始化其数据成员。@DimitriDanilov要么在类playerBat中定义默认构造函数,要么在结构s_game_元素中定义默认构造函数,并在mem初始值设定项列表中调用playerBat的构造函数,要么在此结构中使用带括号的初始值设定项。