簡體   English   中英

在 C++ 中將對象作為參數傳遞

[英]Passing an object as argument in c++

我是 C++ 的新手,試圖了解命名空間和類。 我這里有 2 個類,它們都在不同的文件中。

第一個是

 #include<iostream>

using namespace std;

namespace project{
 class Student{
    string name,address,enrolmentDate ,usn;
    int hours;
    public:
    Student(char* nusn, char* nname, char* naddress, char* ndate,int nhours){
        usn = nusn;
        name = nname;
        address = naddress;
        enrolmentDate = ndate;
        hours = nhours;
    }
    Student(){
        getData();
    }
    void getData(){
        std::cout << "Enter Usn,Name,Address,EnrolmentDate,Hours\n";
        std::cin >> usn >> name >> address >> enrolmentDate >> hours;
    }
    string getName(){
        return name;
    }
    string getAddress(){
        return address;
    }
    string getenrolmentDate(){
        return enrolmentDate;
    }
    int getHours(){
        return hours;
    }
    string getUsn(){
        return usn;
    }
 };
}

第二類是

    #include<iostream>

using namespace std;

namespace project{
    class CourseRegistration{
    string usn, courseId ;
    int hours, grade;
    public:
    CourseRegistration(project::Student obj, string courseId, int nhours, int ngrade){
       usn = obj.getUsn();
       this->courseId = courseId;
       hours = nhours;
       grade = ngrade;
    }
    };
}

第一個類編譯正常。但是第二個類給出錯誤。
錯誤就在該學生對象附近。

Course.cpp:10:38: error: expected ‘)’ before ‘obj’
  CourseRegistration(project::Student obj, string courseId, int nhours, int ngrade){

我該如何糾正?

我沒有看到任何證據表明您在“第二個文件”中包含了Student的定義。 您的類應該在頭 (.h) 文件中聲明,並在源 (.cpp) 文件中實現。 您的編譯器可能會抱怨,因為它不知道Student是一個類。

學生.h

#include<iostream>

using namespace std;

namespace project {
    class Student {
    private:
        string name,address,enrolmentDate, usn;
        int hours;
    public:
        Student( char*, char*, char*, char*, int );
        Student();
        void getData();
        string getName();
        string getAddress();
        string getenrolmentDate();
        int getHours();
        string getUsn();
    }
}

學生.cpp

#include "Student.h"

namespace project {

Student::Student( char* nusn, char* nname, char* naddress, char* ndate,int nhours ) {
    usn = nusn;
    name = nname;
    address = naddress;
    enrolmentDate = ndate;
    hours = nhours;
}

Student() {
    getData();
}

void getData() {
    std::cout << "Enter Usn,Name,Address,EnrolmentDate,Hours\n";
    std::cin >> usn >> name >> address >> enrolmentDate >> hours;
}

string getName() {
    return name;
}

string getAddress() {
    return address;
}

string getenrolmentDate() {
    return enrolmentDate;
}

int getHours() {
    return hours;
}

string getUsn() {
    return usn;
}

}

課程注冊.h

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

using namespace std;

namespace project{
    class CourseRegistration {
    private:
        string usn, courseId ;
        int hours, grade;
    public:
        CourseRegistration( Student, string, int, int );
    }
}

課程注冊.cpp

#include<CourseRegistration.h>


namespace project {
    CourseRegistration::CourseRegistration( Student obj, string courseId, int nhours, int ngrade ) {
        usn = obj.getUsn();
        this->courseId = courseId;
        hours = nhours;
        grade = ngrade;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM