C++ h 和 cpp 文件中的指针声明冲突
C++ conflicting pointer declaration in h and cpp file
所以我需要一个将 Person 指针作为参数的方法。这意味着我必须在我的头文件和 cpp 文件中声明它。它看起来像这样。
人注册
#pragma once
class PersonReg
{
public:
PersonReg(int const maxSize);
void addPerson(Person* personPtr);
~PersonReg();
};
人注册.cpp
PersonReg::PersonReg(int mSize)
{
maxSize = mSize;
}
void add(Person* personPtr) {
//Do stuff
}
PersonReg::~PersonReg()
{
}
问题是Visual Studio抱怨addPerson的函数定义缺失,并给出了实现它的建议。如果我这样做,它看起来像这样:
void PersonReg::addPerson(Person * personPtr)
{
}
现在这里发生了什么?为什么找不到我的实现? 星号周围的空格是什么意思?有什么区别?
void PersonReg::addPerson(Person* personPtr) {
//Do stuff
}
是你需要的。您错过了说出函数的正确名称和命名空间的位。
我也不认为星号周围的空间很重要。有些人省略了类型旁边的空格,有些人省略了名称旁边的空格。
基本上,当你创建函数时void add(Person* personPtr) {
你已经定义了一个不在类内的函数,它与它没有任何联系。另一方面,当您使用范围解析运算符时::
您已经重载了一个在类中具有原型的函数。
简单来说,执行void PersonReg::addPerson(Person * personPtr)
是指类中的函数。
如果你正在做void add(Person* personPtr) {
你正在定义另一个不属于类的函数。
希望这有帮助。
相关文章:
- 类的静态结构指针声明在C++
- 函数指针声明
- 指针声明
- 使用无效指针初始化指针声明符的行为是否未定义?
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 指针声明和间接寻址之间的区别
- 是否可以将“自动”关键字用作函数指针声明中使用初始化的返回类型
- 与使用指针声明的字符串和C 中的数组相混淆
- 如何在C 中使用不同数据类型的类模板指针声明指针
- 指向STD :: vector,指针声明
- 为什么我们不能泛化指针声明?
- C 返回类型指针声明
- 将结构指针声明为函数的返回类型
- C++ h 和 cpp 文件中的指针声明冲突
- 为什么或何时用指针声明int
- 如何将函数指针声明指向模板函数,其返回类型取决于模板类
- 如何将方法指针声明为Typedef方法参数
- 通过参考或指针声明属性C
- C 指针声明
- 指针声明基础(多维数组指针的赋值)