【发布时间】:2020-09-14 11:12:08
【问题描述】:
我是 C++ 新手,我想了解为什么我不能在这里使用点 (.) 运算符,因为变量是在类中声明的。
class SessionController {
private: SessionView view;
private: Session model;
public: SessionController (SessionView view, Session model) {
this.view = view;
this->model = model;
}
};
我在this.view = view; 收到一个错误,说
Member reference type 'SessionController *' is a pointer; did you mean to use '->'?
【问题讨论】:
-
两件事:首先,
this是一个指针,指向当前类的一个实例(对象);并且使用“箭头”运算符->将成员访问与指针取消引用相结合。表达式this->model等价于(*this).model。老实说,任何decent book、教程或课程都应该有这些信息。 -
因为
this是一个指针,而不是一个对象/引用 -
哦,天哪,看起来您来自 Java/C# 背景。 C++ 非常不同,如果您期望某些事情与其他语言相同,那么它可能会显得不合理。最好放弃这些期望。从头开始学习 C+。
-
@StoryTeller-UnslanderMonica:我认为每次离开 Java 和 C# 都是一件好事。
标签: constructor