如何在其他类中使用用户定义的类型,这是在某些类中定义的?

时间:2015-10-30 08:05:22

标签: c++

猜猜我们有像

这样的课程
class A{
public:
struct B{
...
};
typedef B C;
};

然后,我想在其他类中使用C类型,即其他类。

如何使用它?

由于

2 个答案:

答案 0 :(得分:3)

如果声明了一个类,那么在类声明中,您就在该类的命名空间中。我们来看一个简单的类:

class Sample{
public:
    void doSomething();
};

让我们说我们也有一个命名空间:

namespace sampleNamespace{
    void doAnotherThing();
}

如果你想让我们说两个函数的指针你会说:

auto* ptrFunction = Sample::doSomething;
auto* ptrAnotherFunction = sampleNamespace::doAnotherThing;

所以语法本身是一样的。现在让我们考虑你的例子:

class Sample{
public:
   struct A{};
   typedef B A;
};

让我们将其转换为命名空间约定:

namespace Sample{
   struct A{};
   typedef B A;
}

现在,如果您想使用结构A,您可以同时执行这两项操作(但成员必须公开显示):

//first option
Sample::A variableName;

//second option
Sample::B variableName;

虽然你当然不能使用命名空间来实现这个:) 所以一般情况下,在这种情况下,你可以想到类似命名空间的类。

答案 1 :(得分:0)

您只需添加.hheader文件并使用A :: C.例如

Header.h

class Demo {
  public:
    struct A {
      int data;
    };
    typedef A B;
};

Main.cpp的

#include <iostream>
#include "Header.h" // This is important

int main() {
  Demo::B *v = new Demo::B;
  v->data = 5;

  // This will print "The data is: 5"
  cout << "The data is: " << v->data << endl;
  delete(v);
  return 0;
}