C++ - 如何在另一个 class 中使用私有构造函数实例化对象
C++ - How to instantiate object with constructor private in another class
我有一个class Piece
,我把默认构造函数设置为private
,因为我想在创建对象时只使用一个特定的构造函数:
class Piece
{
private:
Piece();
public:
Piece (int var1, int var2);
~Piece();
}
现在我有一个 class Game
有一个 vector of Pieces
:
class Game
{
private:
std::vector<Piece> m_pieces;
public:
Game();
~Game();
CreatePieces(); //<-- only here, I will create the Piece objects, not in the constructor
}
现在我想要一个 class Foo
,它包含一个 Piece
:
class Foo
{
private:
Piece m_piece;//ERROR!!! cannot access private member declared in class 'Piece'
public:
Foo();
~Foo();
}
我的问题:
现在我需要在 Foo class
上使用 m_piece
的默认构造函数。
但我想避免这种情况并像我在 Game class
.
上使用的那样使用
无论如何我可以保持我的 Piece class
原样 ,并创建一个 Piece object
,就像在 Foo class
中一样,但是在我的 Foo()
构造函数上用构造函数 Piece (int var1, int var2);
初始化它?
您可以在Foo
构造函数中初始化m_piece
来调用特定的构造函数,例如:
class Foo
{
Foo() : m_piece(0,0)
{
}
}
我有一个class Piece
,我把默认构造函数设置为private
,因为我想在创建对象时只使用一个特定的构造函数:
class Piece
{
private:
Piece();
public:
Piece (int var1, int var2);
~Piece();
}
现在我有一个 class Game
有一个 vector of Pieces
:
class Game
{
private:
std::vector<Piece> m_pieces;
public:
Game();
~Game();
CreatePieces(); //<-- only here, I will create the Piece objects, not in the constructor
}
现在我想要一个 class Foo
,它包含一个 Piece
:
class Foo
{
private:
Piece m_piece;//ERROR!!! cannot access private member declared in class 'Piece'
public:
Foo();
~Foo();
}
我的问题:
现在我需要在 Foo class
上使用 m_piece
的默认构造函数。
但我想避免这种情况并像我在 Game class
.
无论如何我可以保持我的 Piece class
原样 ,并创建一个 Piece object
,就像在 Foo class
中一样,但是在我的 Foo()
构造函数上用构造函数 Piece (int var1, int var2);
初始化它?
您可以在Foo
构造函数中初始化m_piece
来调用特定的构造函数,例如:
class Foo
{
Foo() : m_piece(0,0)
{
}
}