Помогите разобраться как получить доступ к структуре которая находиться в классе

Рейтинг: -1Ответов: 1Опубликовано: 18.03.2023

Я создал код с структурой в классе. Не могу понять как обратиться к елементам структуры вне класса.

#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;

Ответы

▲ 2

Отвлекаясь — зачем вы все время тягаете за собой неиспользуемую глобальную переменную?...

В вашем коде

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, или работать с ним через открытые функции-члены класса.

Сама парадигма ООП предполагает, что работать с объектами следует только через их функции-члены; никто снаружи не должен знать, что там у него внутри, какие именно члены-данные и какого типа.