首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用类内的类

调用类内的类
EN

Stack Overflow用户
提问于 2009-05-18 08:55:58
回答 3查看 11.7K关注 0票数 0

我正在尝试编写一个类,当被要求时,它将调用一个类并使它成为一个类成员。这里有一个简单的例子来说明我的意思:

代码语言:javascript
复制
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的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-18 09:05:25

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

代码语言:javascript
复制
foo :: foo() : Class( "data" ) {
}
票数 4
EN

Stack Overflow用户

发布于 2009-05-18 09:00:04

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

代码语言:javascript
复制
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();
}
票数 1
EN

Stack Overflow用户

发布于 2009-05-18 09:03:00

我不确定我是否正确地理解了这个问题。但是,如果您想按需创建一个对象,那么您可以这样做:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/876776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档