我在执行程序时遇到了一些问题。 有没有办法使用另一个类中声明的结构?
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"
答案 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
(使用public
或friend
)访问B::personB
,并将其范围设为{{1}}。