所以我需要一个以Person指针作为参数的方法。这意味着我必须在我的头文件和我的cpp文件中声明它。它看起来像这样。
PersonReg.h
#pragma once
class PersonReg
{
public:
PersonReg(int const maxSize);
void addPerson(Person* personPtr);
~PersonReg();
};
PersonReg.cpp
PersonReg::PersonReg(int mSize)
{
maxSize = mSize;
}
void add(Person* personPtr) {
//Do stuff
}
PersonReg::~PersonReg()
{
}
问题是Visual Studio抱怨缺少addPerson的函数定义并给出了实现它的建议。如果我这样做,它看起来像这样:
void PersonReg::addPerson(Person * personPtr)
{
}
现在发生了什么?为什么它找不到我的实现?星号周围的空格是什么意思?有什么区别?
答案 0 :(得分:1)
void PersonReg::addPerson(Person* personPtr) {
//Do stuff
}
你需要什么。你错过了说出函数正确名称和命名空间的位置。
我也不认为星号周围的空间很重要。有些人会忽略该类型旁边的空间,有些人会在名称旁边留下空间。
答案 1 :(得分:1)
基本上,当您创建函数void add(Person* personPtr) {
时,您已经定义了一个不在类中的函数,并且它与它没有任何连接。另一方面,当您使用范围解析运算符::
时,您已经重载了一个在类中具有原型的函数。
简单来说,执行void PersonReg::addPerson(Person * personPtr)
是指类中的函数。
如果您正在进行void add(Person* personPtr) {
,那么您正在定义另一个不属于该类的函数。
希望这有帮助。