在C ++中定义在类中声明的struct的构造函数

时间:2010-10-01 16:52:01

标签: c++

如何为结构声明构造函数?我的结构是在类的私有部分声明的,我想为它声明我的构造函数。

以下是我的代码

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文件中实现该构造函数?

4 个答案:

答案 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)
{
}