使用另一个类的结构

时间:2014-02-02 15:48:35

标签: c++ class struct

我在执行程序时遇到了一些问题。 有没有办法使用另一个类中声明的结构?

Example

Class A{
 struct personA
 {
   char name[MAX];
   char nationality[MAX];
 }

 void addPersonA(fstream, int, personA);
}

Class B{
 struct personB
 {
   char nameB[MAX];
   char nationalityB[MAX];
 }

 void addPersonB(fstream, int, personB);
}

//Class A.CPP
Class_A
{

int choice;

cin >> choice;

   if(choice == 1)
{
personA a;
addPersonA(afile, num, a);

}

else
{

personB b; // how do i include this part?

addPersonB(afile, num, b); // this part error. b is not defined.

}

}

问题是personB未在范围内声明。

Class_A.cpp的头文件包含以下内容

#include "Class_A.h" 
#include "Class_B.h"

2 个答案:

答案 0 :(得分:1)

您需要公开personA

class A
{
public:

 struct personA
 {
   char name[MAX];
   char nationality[MAX];
 }

 void addPersonA(fstream, int, personA);
}

要访问子类/结构,您需要使用完全限定名称:

if(choice == 1)
{
  A::personA a;
  addPersonA(afile, num, a);    
}

答案 1 :(得分:0)

允许personB class A(使用publicfriend)访问B::personB,并将其范围设为{{1}}。