调用没有'new'的成员变量的构造函数

时间:2014-08-26 12:43:32

标签: c++ constructor

我想在类m_foo的构造函数中调用类A的成员A的构造函数。 用m_foo = new Foo()调用它是不是很麻烦?或者我可以在没有把它放在堆上的情况下调用它吗? 我想传递一个256字节数组的指针,以便Foo对象用指针指向的数据填充其成员数组。 但是,如何调用我在头文件中声明的成员变量的构造函数?

A.hpp

class A{ 

 public
 A();

 private:
 Foo m_foo;

};

A.cpp

 A::A()
{
 //How to call constructor of class Foo here?


}

Foo.hpp

class Foo()
{
 Foo(char* p)
 {
  memcpy(m_Array, p, sizeof(m_Array)/sizeof(m_Array[0]));
 }
  private:
 char m_Array[256];
};

2 个答案:

答案 0 :(得分:6)

使用A构造函数的成员初始化列表:

 A::A() : m_foo(...)
 {


 }

您可以从

获取构建char*所需的m_foo

A构造函数:

A::A(char* p) : m_foo(p) {}

或其他功能:

A::A() : m_foo(GetBuffer()) {}

答案 1 :(得分:2)

如果你不介意将指针传递给A的构造函数,这可能是你想要的:

class A
{ 
    public:
    A(const char* p);

    private:
    Foo m_foo;
};

A::A(const char* p) : m_foo(p) // <- calls Foo's ctor here
{
}