【发布时间】:2020-11-30 15:42:09
【问题描述】:
我的班级学生有这个构造函数。
student::student( char* rollno , char* name , date dob) :
rollno(rollno), name(name),dob(dob)
{
}
当我写作时
student s1( "l1f18bscs0322" , "usama" , { 13,7,1998 });
总的来说,我认为它在我的大学接受它是因为它使用 Visual Studio 2013,但它给出了错误
在家里,因为我正在使用 Visual Studio 2019。它说没有构造函数的实例与参数列表匹配,它将双引号中的值作为指向常量的指针。将值传递给此构造函数的替代方法是什么?因为即使我将构造函数原型更改为指向指针的常量,也会产生新的错误,即我无法用常量初始化非常量成员。
【问题讨论】:
-
文字字符串总是是 C++ 中的常量字符数组。这是 C++ 标准本身。旧版本的 MSVC++ 编译器可能对允许它的语言进行了不可移植的扩展。
-
您不能将字符串文字(如“usama”)转换为
char*。你需要一个const char*。 -
因为它一直是一个,所以现在MSVC遵循当前的c++标准。
-
@Someprogrammerdude 在 C++11 之前,只弃用了转换。该标准有一个允许这种转换的例外,我猜是为了与 C 兼容。
标签: c++ visual-studio constants