C++ 如何在结构中声明类?
这是我的.hppC++ 如何在结构中声明类?,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 {
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的构造函数,要么在此结构中使用带括号的初始值设定项。