#include<iostream>
#include<string>
#include<vector>
using namespace std;
class Course
{
public:
string name;
string instructorInCharge;
int numberOfStudents;
int totalMarks;
Course(string u, string v, int p, int q){
this->name=u;
this->instructorInCharge=v;
this->numberOfStudents=p;
this->totalMarks=q;
}
vector<int> studentMarks (numberOfStudents);
};
class Labs:public Course
{
vector<int>labMarks(numberOfStudents);
};
int main()
{
Course c("Rahul","Hota",200,300);
cout<<"hello there";
}
當我編譯此代碼時,我收到以下錯誤:
1.cpp:20:31: error: 'numberOfStudents' is not a type
20 | vector<int> studentMarks (numberOfStudents);
| ^~~~~~~~~~~~~~~~
1.cpp:28:29: error: 'numberOfStudents' is not a type
28 | vector<int>labMarks(numberOfStudents);
| ^~~~~~~~~~~~~~~~
請告訴我我的錯誤是什么。numberostudents 應該是向量的大小。但沒有任何功能。
uj5u.com熱心網友回復:
vector<int> studentMarks (numberOfStudents);
這是一個函式宣告。回傳型別是vector<int>,名稱是studentMarks,它接受一個型別的引數numberOfStudents。除非,正如錯誤所指出的,numberOfStudents不是型別。
您不能使用括號來指定默認成員初始化程式。您必須使用花括號:
T member {value};
或“等于”初始化程式:
T member = value;
但是請注意,您不會初始化numberOfStudents成員,而是稍后在建構式主體中分配它。此分配是在studentMarks初始化之后,因此默認成員初始化器studentMarks不會反映分配的大小。相反,由于使用了不確定的值,程式的行為將是未定義的。這可以通過numberOfStudents在成員初始化器串列中初始化來解決。
uj5u.com熱心網友回復:
如果你想在課堂上初始化,你可以這樣做:
vector<int> studentMarks = vector<int>(numberOfStudents);
現在,默認建構式將在創建實體時進行studentMarks初始化。vector<int>(numberOfStudents)Course
但是,這將導致未定義numberOfStudents的行為,因為在studentMarks. 您可以改用成員初始化器串列:
Course(std::string u, std::string v, int p, int q)
: name(std::move(u)),
instructorInCharge(std::move(v)),
numberOfStudents(p),
totalMarks(q),
studentMarks(numberOfStudents)
{
}
同樣對于Labs班級:
class Labs : public Course {
public:
Labs(std::string u, std::string v, int p, int q)
: Course(u, v, p, q), // initialize the base class part of a `Labs`
labMarks(p) // initialize the added member variable
{
}
std::vector<int> labMarks;
};
uj5u.com熱心網友回復:
您也可以使用resize的方法std::vector。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
class Course
{
public:
string name;
string instructorInCharge;
int numberOfStudents;
int totalMarks;
vector<int> studentMarks;
Course(string u, string v, int p, int q){
this->name = u;
this->instructorInCharge = v;
this->numberOfStudents = p;
this->totalMarks = q;
this->studentMarks.resize(numberOfStudents);
}
};
class Labs : public Course
{
vector<int> labMarks;
public:
Labs(string u, string v, int p, int q) : Course(u, v, p, q)
{
labMarks.resize(p);
}
};
int main()
{
Course c("Rahul","Hota",200,300);
cout<<"hello there";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/416008.html
標籤:
上一篇:將變數內容匯出到檔案
