我有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();
}
我的问题:
现在我需要在m_piece
上使用Foo class
的默认构造函数。
但我想避免这种情况,并按照我在Game class
上使用的那样使用。
无论如何,我可以将Piece class
保持原样,并创建一个Piece object
,就像在Foo class
中一样,但是使用构造函数对其进行初始化我Piece (int var1, int var2);
构造函数上的Foo()
?
答案 0 :(得分:7)
您可以在m_piece
构造函数中初始化Foo
以调用特定的构造函数,例如:
class Foo
{
Foo() : m_piece(0,0)
{
}
}