Помогите разобраться как получить доступ к структуре которая находиться в классе
Я создал код с структурой в классе. Не могу понять как обратиться к елементам структуры вне класса.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include<locale>
#include<Windows.h>
using namespace std;
class Node {
struct NONE {
char name[80];
char date[90];
char m[90];
char d[90];
char num[90];
};
}obj1;
int main()
{
const int n = 2;
bool state;
char s[80];
Node* obj = new Node;
for (int i =0; i!=n; ++i)
{
cout << ("Student name: ") << endl;
cin >> obj[i].name;
cout << obj[i].name << endl;
Ответы (1 шт):
Отвлекаясь — зачем вы все время тягаете за собой неиспользуемую глобальную переменную?...
В вашем коде
class Node
{
struct NONE
{
char name[80];
char date[90];
char m[90];
char d[90];
char num[90];
};
};
NONE — объявление типа, но не элементе. Вот если бы вы написали, например,
class Node
{
struct
{
char name[80];
char date[90];
char m[90];
char d[90];
char num[90];
} NONE;
};
то был бы у вас член NONE с типом безымянной структуры. И обращаться надо было бы так:
cin >> obj[i].NONE.name;
cout << obj[i].NONE.name << endl;
Но! У вас она, будучи объявлена в классе без модификаторов доступа, является private, а значит, за пределами класса недоступна — только членам класса и дружественным функциям.
Так что у вас при этом варианты — или объявлять член NONE как public, или работать с ним через открытые функции-члены класса.
Сама парадигма ООП предполагает, что работать с объектами следует только через их функции-члены; никто снаружи не должен знать, что там у него внутри, какие именно члены-данные и какого типа.