我正在研究 C++ 类。
我基本上是在重新制作我在这里所做的事情,但是在 C++ 中。
它进展顺利,但我不明白错误member reference type 'Human *' is a pointer; did you mean to use '->'?意味着什么。我从未使用过->,也见过*以这种方式使用过(例如const char *),但我不太确定它是如何工作的。
我发现的最接近的问题是这个,但答复没有帮助。
这是我的代码
#include <stdio.h>
#include <cstdlib>
#include <iostream>
using std::cout;
using std::cin;
using std::string;
class Human {
public:
string Name;
int Age;
double Height;
void Initialise(string name, int age, double height) {
this.Name = name; // Error here
this.Age = age; // Error here
this.Height = height; // Error here
}
void Grow(double rate) {
if (rate < 0) {
cout << "You can't grow at a negative rate, silly.\n";
return;
}
else if (rate >= 0.2) {
cout << "You can't grow that high, silly.\n";
return;
}
this.Height += rate; // Here too
}
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
this总是一个指针,所以你不能说this.Name——你需要说(*this).Name。
语法a->b 相当于(*a).b所以你可以说this->Name(这是错误消息明确暗示的),尽管:
里面的方法,this->是多余的。通常,您可以简单地引用或分配给Name
(尽管,正如 Jeremy Friesner 在他的评论中指出的那样,可能存在您可能真正想要或需要它的罕见/深奥的情况)。
正如评论所说,C++必须正式学习。您只需要了解第1 点和第 2 点(以及一百万个其他类似的约定)。你不能偶然发现他们。试错是行不通的。
该->语法甚至不是C ++具体。它是 C 的一部分。 C 规则手册非常薄——所以最好先正式学习它,然后再继续(在这里我只能同意 user4581301)C++ 的“batsmurf 疯狂”复杂性。
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |