如何为结构声明构造函数?我的结构是在类的私有部分声明的,我想为它声明我的构造函数。
以下是我的代码
class Datastructure {
private:
struct Ship
{
std::string s_class;
std::string name;
unsigned int length;
} minShip, maxShip;
std::vector<Ship> shipVector;
public:
Datastructure();
~Datastructure();
};
这是我的头文件;如何为我的struct Ship声明构造函数以及我在哪里必须在.h文件或cpp文件中实现该构造函数?
答案 0 :(得分:6)
在头文件
中声明的构造方法struct Ship
{
Ship();
std::string s_class;
std::string name;
unsigned int length;
} minShip, maxShip;
并在代码中实现:
DataStructure::Ship::Ship()
{
// build the ship here
}
或更有可能:
DataStructure::Ship::Ship(const string& shipClass, const string& name,
const unsigned int len) :
s_class(shipClass), name(_name), length(len)
{
}
在标题中显示:
struct Ship
{
private:
Ship();
public:
Ship(const string& shipClass, const string& name, unsigned len);
std::string s_class;
std::string name;
unsigned int length;
} minShip, maxShip;
答案 1 :(得分:1)
您声明它与声明任何其他constrctor的方式相同
class Datastructure {
private:
struct Ship
{
std::string s_class;
std::string name;
unsigned int length;
Ship(); // <- here it is
} minShip, maxShip;
std::vector<Ship> shipVector;
public:
Datastructure();
~Datastructure();
};
您定义它的方式与定义任何其他构造函数的方式相同。如果是内联的,则在头文件中定义它。如果它不是内联的,则在实现文件
中定义它Datastructure::Ship::Ship()
{
// whatever
}
答案 2 :(得分:0)
在你的代码中声明它正确:
class Datastructure {
private:
struct Ship
{
// Constructor!!!
Ship();
std::string s_class;
std::string name;
unsigned int length;
} minShip, maxShip;
std::vector<Ship> shipVector;
public:
Datastructure();
~Datastructure();
};
然后定义,使用适当的范围:
Datastructure::Ship::Ship()
{
// stuff
}
答案 3 :(得分:0)
在结构中声明它:
class Datastructure {
struct Ship
{
//Ship constructor declared
Ship();
...etc...
}
};
您可以在*.h
文件中定义其内联实现:
class Datastructure {
struct Ship
{
//Ship constructor declared and defined
Ship()
: length(0)
{
}
...etc...
}
};
或者您可以在*.cpp
文件中定义它:
//Ship constructor defined
Datastructure::Ship::Ship()
: length(0)
{
}