1. ホーム
  2. c++

[解決済み] C++ 引数リストに一致するコンストラクタのインスタンスがありません。

2022-02-15 09:02:59

質問

私のコードのどこがおかしいのかがわかりません。edxのラボの課題を終わらせようとしているのですが、なぜ私のコードが動かないのかがわかりません。課題では、Student クラス、Teacher クラス、Course クラスを作成することが求められています。コースクラスのコンストラクタを理解しようとしていますが、私の教師オブジェクトを受け入れません。私はオブジェクトを作成するためにポインタを使用し、そのためにメモリにスペースを確保します(私がedxで学んだことの1つです、私が誤解していたら教えてください)。そこで、コンストラクタで参照を使おうとしたのですが、それでもうまくいきません。以下はそのコードです。フィラーとして "unknown" を使っています。

メインコードです。

#include "stdafx.h"
#include <iostream>
#include <string>
#include "Student.h"
#include "Teacher.h"
#include "Course.h"

using namespace std;

int main()
{
    Teacher *teach = new Teacher("Jane", "DoeDoe", 25, "Unknown", "Unknown", "Unknown");
    Student *stud1 = new Student();
    Student *stud2 = new Student("John", "Doe", 19, "Unknown", "Unknown", "Unknown");
    Student *stud3 = new Student("Jane", "Doe", 23, "Unknown", "Unknown", "Unknown");
    //Method had two postions. First and Last
    stud1->setName("Unknown", "Unknown");
    stud1->setAge(20);
    stud1->setAddress("Unknown");
    stud1->setCity("Unknown");
    stud1->setPhone("Unknown");

    Course *c = new Course("Intermediate C++", teach, stud1, stud2, stud3);


    return 0;
}

コース.h

#pragma once

#include <iostream>
#include "Student.h"
#include "Teacher.h"
#include <string>

using namespace std;

class Course {
private:
    string name;
    Teacher teacher;
    Student student1;
    Student student2;
    Student student3;


public:


    Course(string n, Teacher &t, Student &s1, Student &s2, Student &s3);

    ~Course();


};

コース.cpp

#include "stdafx.h"
#include "Course.h"



Course::Course(string n, Teacher &t, Student &s1, Student &s2, Student &s3)
{
    name = n;
    teacher = t;
    student1 = s1;
    student2 = s2;
    student3 = s3;

}

Course::~Course()
{
}

解決方法は?

Course(string n, Teacher &t, Student &s1, Student &s2, Student &s3);

への参照を渡すことを期待します。 t , s1 , s2 ..

Course *c = new Course("Intermediate C++", teach, stud1, stud2, stud3);

ここでは teach というのは teacher* . あなたは

Course *c = new Course("Intermediate C++", *teach, *stud1, *stud2, *stud3);

について詳しく知りたい方はこちら 参照とポインタ