Usa*_*ved 1 c++ constants visual-studio
我为我的班级学生提供了这个构造函数。
student::student( char* rollno , char* name , date dob) :
rollno(rollno), name(name),dob(dob)
{
}
Run Code Online (Sandbox Code Playgroud)
当我student s1( "l1f18bscs0322" , "usama" , { 13,7,1998 });
在 main 中编写
时,它在我的大学中接受它,我认为是因为它使用 Visual Studio 2013,但是当我使用 Visual Studio 2019 时,它在家里出现错误。它说没有构造函数的实例与参数列表匹配,它采用双倍值引号作为指向常量的指针。将值传递给此构造函数的替代方法是什么?因为即使我将构造函数原型更改为指向指针的常量,它也会给出新的错误,即我无法用常量初始化我的非常量成员。
因为它是!
在 C++ 中,字符串文字的类型是const char[N](其中N是字符串的长度,包括其空终止符)。那衰减到const char*,不是char*。
在 C++ 的早期版本(2011 之前)中,您可以“忘记”const与 C 的兼容性,尽管不推荐这样做(并且尝试“修改”文字具有未定义的行为)。从那以后你必须写它。
您已升级到强制执行此规则的 Visual Studio 版本,可能只是因为其默认 C++ 标准是 C++11 或更高版本。
这是一件好事; 添加const.
如果您的课程材料char*在这里使用,那么它已经过时了,并且在某种意义上总是“错误”的。
即使我将构造函数原型更改为指向指针的常量,它也会给出新的错误,即我无法使用常量初始化我的非常量成员
你需要对你的成员变量做同样的事情。