我正在尝试编写一个类,当被问到时,会调用一个类并将其变成一个类成员。这是我的意思的一个简单例子:
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的解决方案。
答案 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;
}