是否可以在全局函数中访问类成员?

rrr45

尽管我确定这是一个常见问题,但我仍无法在此找到线程。我找到的最接近的是这里,但最终似乎并没有问同样的事情。

我对C ++相当陌生,所以我可能只是在做一些愚蠢的事情。

说我有以下Person类设置(对所有代码都很抱歉。我不确定问题出在哪里-如果可能的话-我包括了所有内容。):

#ifndef PERSON_H
#define PERSON_H

#include <string>
using std::string;

class Person {
public:
  Person();
  Person(string name);
  ~Person();

  string name;

private:
};

#endif

人.cpp

#include "person.h"

Person::Person() {
}

Person::Person(string name) {
  this->name = name;
}

Person::~Person() {
}

然后,我想要一个全局函数,该函数将更改name给定人员属性:

globals.h

#ifndef GLOBALS_H
#define GLOBALS_H

#include <string>
using std::string;

class Person; // forward declaring

void changeName(Person* person, string name);

#endif

globals.cpp

#include "globals.h"

void changeName(Person* &person, string name) {
  person->name = name;
}

当我尝试编译时,出现“不完整的类”和“转发声明”错误(如有必要,我可以提供)。我是在做错什么,还是我必须使用类成员函数(例如Person::changeName(.....)来执行此操作

感谢您的帮助。

克里斯蒂安·哈克(Christian Hackl)

您的globals.cpp文件缺少必要的文件#include "person.h"


还有其他一些问题:

void changeName(Person* person, string name);

这可能应该是:

void changeName(Person& person, string name);

除非您希望使用调用该函数nullptr

void changeName(Person* &person, string name) {
  person->name = name;
}

应该:

void changeName(Person& person, string name) {
  person.name = name;
}

然后是这样的:

Person::Person(string name) {
  this->name = name;
}

您应该改用初始化列表:

Person::Person(string name) : name(name) {}

而且我不知道你是否意识到通过的可能性std::string通过const&它一直是传递字符串的准则,直到C ++ 11出现并就传递大对象的最佳实践进行了持续的讨论。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以访问析构函数中的静态成员的静态对象

来自分类Dev

访问从模板类派生的类中的基本成员函数

来自分类Dev

如何在类中访问全局数据成员和成员函数?

来自分类Dev

是否可以限制对python中的代码块的全局访问?

来自分类Dev

Android:您可以在DoInBackground中访问AsyncTask类成员吗?

来自分类Dev

是否可以限制成员函数访问成员变量?

来自分类Dev

在Python中,是否可以从函数中访问全局名称空间

来自分类Dev

是否可以在Unity中创建“全局”类实例?

来自分类Dev

从成员结构的成员函数中访问类的成员?

来自分类Dev

访问超类的成员函数

来自分类Dev

构造函数是否总是可以立即访问在其类中声明的函数?

来自分类Dev

是否可以从其他程序包访问在友好类中构建的公共构造函数?

来自分类Dev

从Python中的类函数访问全局变量

来自分类Dev

使用composition或friend类将其他类的成员函数访问到“ this”类的成员函数中

来自分类Dev

是否可以在python中的类X本身的成员函数中创建类X的对象并对其进行操作

来自分类Dev

父类的成员函数可以访问子类的成员函数吗?如何?

来自分类Dev

如何在类中访问全局数据成员和成员函数?

来自分类Dev

成员函数体内的类成员访问

来自分类Dev

全局类中的静态成员

来自分类Dev

如何访问与全局函数具有相同功能签名的类中的全局函数?

来自分类Dev

是否可以限制成员函数访问成员变量?

来自分类Dev

在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

来自分类Dev

无法访问成员函数中的类变量

来自分类Dev

无法从类构造函数中访问全局变量

来自分类Dev

是否可以在React中创建一个仍可以访问全局Redux存储的类?

来自分类Dev

是否可以在其成员函数中使用类模板?

来自分类Dev

在类函数中访问数组类成员

来自分类Dev

可以访问类数据成员并在析构函数中对它们执行操作吗?

来自分类Dev

是否可以从函数内访问 exec 提供的全局字典?

Related 相关文章

  1. 1

    可以访问析构函数中的静态成员的静态对象

  2. 2

    访问从模板类派生的类中的基本成员函数

  3. 3

    如何在类中访问全局数据成员和成员函数?

  4. 4

    是否可以限制对python中的代码块的全局访问?

  5. 5

    Android:您可以在DoInBackground中访问AsyncTask类成员吗?

  6. 6

    是否可以限制成员函数访问成员变量?

  7. 7

    在Python中,是否可以从函数中访问全局名称空间

  8. 8

    是否可以在Unity中创建“全局”类实例?

  9. 9

    从成员结构的成员函数中访问类的成员?

  10. 10

    访问超类的成员函数

  11. 11

    构造函数是否总是可以立即访问在其类中声明的函数?

  12. 12

    是否可以从其他程序包访问在友好类中构建的公共构造函数?

  13. 13

    从Python中的类函数访问全局变量

  14. 14

    使用composition或friend类将其他类的成员函数访问到“ this”类的成员函数中

  15. 15

    是否可以在python中的类X本身的成员函数中创建类X的对象并对其进行操作

  16. 16

    父类的成员函数可以访问子类的成员函数吗?如何?

  17. 17

    如何在类中访问全局数据成员和成员函数?

  18. 18

    成员函数体内的类成员访问

  19. 19

    全局类中的静态成员

  20. 20

    如何访问与全局函数具有相同功能签名的类中的全局函数?

  21. 21

    是否可以限制成员函数访问成员变量?

  22. 22

    在C ++中,是否可以通过更改类声明来更改成员函数的参数类型?

  23. 23

    无法访问成员函数中的类变量

  24. 24

    无法从类构造函数中访问全局变量

  25. 25

    是否可以在React中创建一个仍可以访问全局Redux存储的类?

  26. 26

    是否可以在其成员函数中使用类模板?

  27. 27

    在类函数中访问数组类成员

  28. 28

    可以访问类数据成员并在析构函数中对它们执行操作吗?

  29. 29

    是否可以从函数内访问 exec 提供的全局字典?

热门标签

归档