那是我在xD的第一篇文章。
最近,经过几年的休息,我开始使自己想起c ++领域的知识。以前,我在C#工作。
作为练习的一部分,我开始编写用于生成汽车类的代码,然后输入和写入数据。 但是我遇到了一个问题。作为练习的一部分,我想使用函数typeid()编写对象的名称,并找出什么是hash_code。 但是我有两个错误,我不能做什么。 如何正确声明指针。
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
class Car {
public:
string _mark;
string _model;
int _year;
int _course;
void UploadData()
{
cout << "Set values" << endl;
cin >> _mark;
cin >> _model;
cin >> _year;
cin >> _course;
cout << "Values uploaded"<<endl;
}
void Write()
{
cout << typeid(this).name <<" " << typeid(this).hash_code << " " << " mark " << _mark << " model " << _model << " year " << _year << " course " << _course;
}
};
int main()
{
Car test1;
test1.UploadData();
test1.Write();
}
错误消息:
严重性代码描述项目文件行抑制状态 错误C3867'type_info :: name':非标准语法;使用“&”创建 指向成员的指针
严重性代码描述项目文件行抑制状态 错误C3867'type_info :: hash_code':非标准语法;使用“&”来 创建一个指向成员的指针
答案 0 :(得分:3)
name
和hash_code
是类std::typeinfo
的成员函数,因此您需要使用括号:
cout << typeid(this).name() <<" " << typeid(this).hash_code()
<< " " << " mark " << _mark << " model " << _model << " year " << _year
<< " course " << _course;
很遗憾,您收到的错误消息令人误解。编译器认为您正在尝试做完全不同且更高级的操作。
但是请注意,typeid(this)
将与typeid(Car*)
完全相同。如果您改写了typeid(*this)
,则与typeid(Car)
相同。 typeid
运算符在具有至少一个虚函数的类上使用时开始变得更加有趣。...