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

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

// 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;
}

当我尝试 运行 这段代码时,我得到 this 错误信息。它说我不能将 *const char 转换为 char。 感谢您的宝贵时间和帮助。

发生这种情况是因为 "test in quotes" 默认为 const char*
声明中带有 const 的值无法更改。
您不能将 const 变量传递给采用 non-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;
}

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