我正在尝试编写一个类,当被要求时,它将调用一个类并使它成为一个类成员。这里有一个简单的例子来说明我的意思:
class foo{
myClass Class;
foo();
};
foo::foo()
{
//Create the class and set it as the foo::Class variable
}我相信这实际上是一件容易的事。如有任何帮助,将不胜感激。
编辑:为糟糕的术语而道歉。我会尽量把我想做的事情做得更简洁些。我正在创建一个类(Foo),它具有一个类定义(myClass)的varaible( class )。我需要创建一个myClass对象并将它分配给类,在类foo中使用-。通过大家的帮助,我已经做到了这一点。
我现在的问题是,我创建的对象给了我一个“未处理的异常”.在Class中的“访问冲突读取位置0x000000c0”,在我试图执行的myClass函数的第一行上。谢谢你的帮忙!
注意:我目前使用的是EMg-2的解决方案。
发布于 2009-05-18 09:05:25
没有必要做任何事情。假设myClass有一个默认构造函数,它将用于为您构造类(您可以在这里使用更好的名称)实例。如果需要将参数传递给构造函数,请使用初始化列表:
foo :: foo() : Class( "data" ) {
}发布于 2009-05-18 09:00:04
如果您只想复合,请使用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();
}发布于 2009-05-18 09:03:00
我不确定我是否正确地理解了这个问题。但是,如果您想按需创建一个对象,那么您可以这样做:
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;
}https://stackoverflow.com/questions/876776
复制相似问题