【问题标题】:How to initialize array with object in c++ by user input?如何通过用户输入在 C++ 中使用对象初始化数组?
【发布时间】:2016-07-28 13:31:44
【问题描述】:

我有下面的代码,信用和加载成功保存到对象,但代码和标题只取字符串的第一个字母。我一开始尝试了course[noOfCourses_].setCode(Code),但它给了我一个错误:

cannot initialize a parameter type char with lvalue char[7].

另一个问题是输入跳过了标题的输入提示,直接进入了信用提示。

void addCourse() {
    Course*course=new Course[MAX_NO_RECS];
    char Code[MAX_COURSECODE_LEN];
    char title[20];
    int credit;
    int load;

    cout << "Course Code: ";
    cin.clear();
    cin >> Code;
    cin.clear();
    course[noOfCourses_].setCode(Code[0]);
    cin.clear();
    cout << "Course Title: ";
    cin.getline(title, 20);
    cin.clear();
    course[noOfCourses_].setTitle(title[0]);
    cin.clear();
    cout << "Credits: ";
    cin >> credit;
    course[noOfCourses_].setCredits(credit);

    cout << "Study Load: ";
    cin >> load;
    course[noOfCourses_].setLoad(load);
    noOfCourses_++;

    courseList_[noOfCourses_]=course;
}

【问题讨论】:

  • 错误 cannot initialize a parameter type char with lvalue char[7] 很清楚,您正在尝试将 char x 初始化为 char x[7] 即:一个数组一个变量。检查或发布您的 Cursor 类定义。
  • 如何实现 Course::setCode 函数?我认为它的参数类型应该是char *。
  • char Course::getCode()const{ return *courseCode_;我有这个,它给了我一个错误“EXC_BAD ACCESS”
  • 当你只填充一个Course时,为什么course是一个指向数组的指针?

标签: c++ xcode computer-science


【解决方案1】:

你的第一种方法是对的。你应该使用course[noOfCourses_].setCode(Code)(顺便说一句:如果变量Code不以大写字母开头会更好)。

问题出在您的Cource::setCode 函数中。看来参数是char。要修复它,您应该将其更改为 char*

void Cource::setCode(char* code) {
...
}

【讨论】:

  • 嗨,你是对的。将代码更改为代码不再给我那个错误。但我遇到的另一个问题是 char Course::getCode()const{ return *courseCode_; } " 线程 EXC_BAD_Access.
  • 试试char* Course::getCode()const{ return courseCode_; }
  • 你能把你的课程的整个实现贴出来
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
相关资源
最近更新 更多