猜猜我们有像
这样的课程class A{
public:
struct B{
...
};
typedef B C;
};
然后,我想在其他类中使用C类型,即其他类。
如何使用它?
由于
答案 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)
您只需添加.h
即header
文件并使用A :: C.例如
class Demo {
public:
struct A {
int data;
};
typedef A B;
};
#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;
}