为啥我得到表达式必须有类类型错误? [复制]

Posted

技术标签:

【中文标题】为啥我得到表达式必须有类类型错误? [复制]【英文标题】:Why am I getting expression must have class type error? [duplicate]为什么我得到表达式必须有类类型错误? [复制] 【发布时间】:2019-10-12 17:00:30 【问题描述】:

我试图运行这个简单的代码块,但出现错误:表达式必须具有tom.nametom.id 的类类型。我在这里做错了什么?

#include <iostream>
#include <string>
using namespace std;

class Student

    string name;
    int id;
    int age;
;


int main()

    Student* tom = new Student;
    tom.name = "tom";
    tom.id = 1;

【问题讨论】:

你没有包含字符串的标题 Student tom;tom-&gt;name, tom-&gt;id 【参考方案1】:

您错误地访问了指针。从指针访问内部变量需要-&gt; 而不是. 运算符。

切换你的代码:

Student* student_ptr = new Student;
student_ptr->name = "Tom";
student_ptr->id = 1;

或者,如果您真的想要使用. 运算符,您可以这样做:

Student* student_ptr = new Student;
(*student_ptr).name = "Tom";
(*student_ptr).id = 1; // the more you know

【讨论】:

以上是关于为啥我得到表达式必须有类类型错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到的表达式必须是可修改的左值?

为啥我必须在 Java 正则表达式中指定整个字符串? [复制]

为啥我得到 Typeerror 超级表达式必须为 null 或函数?

为啥在三元函数中分配给数组类型的表达式失败

错误:ORA-01790:表达式必须具有与相应表达式相同的数据类型

错误:WatchActivity 无法解析为一种类型,为啥我会得到这个? [复制]