在类中调用类

时间:2009-05-18 08:55:58

标签: c++ class

我正在尝试编写一个类,当被问到时,会调用一个类并将其变成一个类成员。这是我的意思的一个简单例子:

class foo{
  myClass Class;
  foo(); 
};
foo::foo()
{
  //Create the class and set it as the foo::Class variable
}

我确信这实际上是一件容易的事。任何帮助,将不胜感激 谢谢

编辑:对不好的术语表示不满。我会尝试更简洁地回顾一下我想做的事情。我正在创建一个类( foo ),它具有可变的( Class ),其类定义为( myClass )。我需要创建一个 myClass 对象,并将其分配给 Class ,并在类 foo 中。通过每个人的帮助,我有点实现了这一点。

我现在的问题是我创建的对象在 myClass的第一行 Class 中给了我一个“Unhandled Exception”...“Access violation reading within 0x000000c0” em>我正在尝试执行的功能。 感谢您的帮助!

注意:我目前正在使用emg-2的解决方案。

3 个答案:

答案 0 :(得分:4)

没有必要做任何事情。假设myClass有一个默认的构造函数,它将用于构造类(你可以在这里使用更好的名称,你知道)实例。如果需要将参数传递给构造函数,请使用初始化列表:

foo :: foo() : Class( "data" ) {
}

答案 1 :(得分:1)

如果您只想复合,请使用Neil解决方案。如果你想要一个聚合(即你将外部对象分配给myClass * Class),你应该使用一个指针:

class foo{
  myClass * Class;
  void createClass(); 
};
// can't use name foo, because its a name reserved for a constructor
void foo::createClass() {
  Class = new myClass();
}

答案 2 :(得分:1)

我不确定我是否正确理解了这个问题。但是,如果您尝试按需创建对象,那么您可以执行以下操作:

class foo{
  myClass* m_pClass;
  foo();
  myClass* f();
  ~foo();
};

foo::foo() : m_pClass(NULL) //Initialize the pointer to NULL do not create any object in the constructor
{
}

foo::~foo()
{
  //Release the allocated object
  delete m_pClass;
  m_pClass = NULL;
}

myClass* foo::f()
{
  //Create a new object and return
  m_pClass = new myClass;
  return m_pClass;
}