не могу получить доступ к переменной класса из функции класса

я создал заголовок Persona.h и в Persona.cc я инициализирую все переменные и функции класса, почему я не могу получить доступ к переменной из Persona.cc?

Persona.h

#ifndef STD_LIB_H
#include <iostream>
#endif
#ifndef STD_LIB_H
#include <string>
#endif

class Persona
{
private:
std::string Nome;

public:
Nasci(std::string);
};

Persona.cc

#ifndef Persona_h
#include "Persona.h"#endif

#ifndef STD_LIB_H
#include <string>
#endif

void Persona::Nasci(std::string nome)
{
// Nome della persona

Nome = nome;
};

это дает мне ошибку:

invalid use of non-static data member 'Persona::Nome'

я не могу понять, что делать, не так ли?

Благодарю вас.

2

Решение

Я предполагаю, что Nasci это метод Personaи, следовательно, определение вашего метода должно выглядеть следующим образом:

void Persona::Nasci(std::string nome)
{
// Nome della persona
Nome = nome;

//...rest of the function
}

В противном случае, если Nasci не является методом или функцией друга Persona тип класса, вы не можете получить доступ к частному члену данных Persona класс внутри тела функции, даже если вы пытались использовать разрешение области имен.

Обычно, когда вы видите код, который использует разрешение области пространства имен для объекта данных или функции внутри другого тела автономной функции, как вы сделали, этот элемент данных или функция не является частным static метод или элемент данных определенного класса, и, следовательно, видимый для других функций, не относящихся к классу. Конечно, есть ряд других применений оператора разрешения области видимости в C ++, но просто сказать, что в вашем случае это потребует Nome быть не частным static элемент данных, чтобы избежать ошибки компилятора. Конечно используя Nome таким образом, это не соответствует вашему сценарию использования, так что вы действительно хотите, чтобы фрагмент кода выше, где вы назначаете Nasci как метод Persona,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]