gpt4 book ai didi

c++ - 无法从类函数访问类变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:02 27 4
gpt4 key购买 nike

我创建了一个头文件 Persona.h,在 Persona.cc 中我正在初始化该类的所有变量和函数,为什么我不能从 Persona.cc 访问变量?

人物.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);
};

人物.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'

我不知道该怎么办,你呢?

谢谢。

最佳答案

我假设 NasciPersona 的一种方法,因此您的方法定义应如下所示:

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

//...rest of the function
}

否则,如果Nasci不是 Persona 的方法或友元函数类类型,您不能访问 Persona 的私有(private)数据成员即使您已尝试使用 namespace 范围解析,也可以在函数主体内类。

通常,当您看到像您所做的那样在另一个独立函数体内的数据对象或函数上使用命名空间范围解析的代码时,该数据成员或函数是非私有(private)的 static特定类的方法或数据成员,因此对其他非类函数可见。当然,C++ 中的范围解析运算符还有许多其他用途,但只是说在您的情况下它需要 Nome。成为非私有(private)static数据成员以避免编译器错误。当然使用 Nome虽然那样不适合您的使用场景,所以您真正想要的是上面的代码段,您可以在其中指定 Nasci作为 Persona 的方法.

关于c++ - 无法从类函数访问类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13695232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com