C++程序有语法错误,第一次使用模块

C++ program has syntax errors, using modules for first time

本文关键字:第一次 模块 错误 程序 语法 C++      更新时间:2023-10-16
// Function displays course information
// instructor defaults to Staff
// enrollment defualts to 30
// main() demonstrates function can be called three ways
#include<iostream>
using namespace std;
int main()
{
void displayCourseInfo(char, char* = "Staff", int = 30);
displayCourseInfo("ENG101");
displayCourseInfo("PSY151", "Bossert");
displayCourseInfo("CIS200", "Edwards", 24);
return 0;
}
void displayCourseInfo(char course, char* instructor, int enrollment)
{  cout << course <<  " taught by "  << instructor <<
" enrollment " << enrollment << endl;
}

当我尝试运行此代码时,我得到 此错误消息。它说我无法将 *const 字符转换为字符。 感谢您的时间和帮助。

C++中的字符串文字(与 C 相反)具有常量字符数组的类型。例如,字符串文本"Staff"的类型为const char [6]

在表达式中使用 数组指示符(极少数例外)将转换为指向其第一个元素的指针。因此,用作参数的字符串文字"Staff"将转换为类型为const char *的指针。

函数displayCourseInfo的第一个参数在尝试将字符串文本作为参数传递时声明为具有char类型。

有效的程序可以如下所示

// Function displays course information
// instructor defaults to Staff
// enrollment defualts to 30
// main() demonstrates function can be called three ways
#include<iostream>
using namespace std;
int main()
{
void displayCourseInfo( const char *, const char * = "Staff", int = 30 );
displayCourseInfo("ENG101");
displayCourseInfo("PSY151", "Bossert");
displayCourseInfo("CIS200", "Edwards", 24);
return 0;
}
void displayCourseInfo( const char *course, const char *instructor, int enrollment)
{  
cout << course <<  " taught by "  << instructor 
<< " enrollment " << enrollment << endl;
}

它的输出是

ENG101 taught by Staff enrollment 30
PSY151 taught by Bossert enrollment 30
CIS200 taught by Edwards enrollment 24

发生这种情况是因为"在引号中测试"默认const char*
声明中带有const的值无法更改。
不能const变量传递给采用非常量参数的函数。

你可以把函数的参数const

#include<iostream>
using namespace std;
void displayCourseInfo(const char *);
void displayCourseInfo(const char *, const char *);
void displayCourseInfo(const char *, const char *, const int);
int main() {
displayCourseInfo("ENG101");
displayCourseInfo("PSY151", "Bossert");
displayCourseInfo("CIS200", "Edwards", 24);
return 0;
}
void displayCourseInfo(const char *course, const char *instructor) {
cout << course << " taught by " << instructor <<
" enrollment " << 30 << endl;
}
void displayCourseInfo(const char *course) {
cout << course << " taught by " << "Staff" <<
" enrollment " << 30 << endl;
}
void displayCourseInfo(const char *course, const char *instructor, const int enrollment) {
cout << course << " taught by " << instructor <<
" enrollment " << enrollment << endl;
}