[英]Creating a counter inside a template class constructor
我被困在一個家庭作業問題上。 我們將創建一個名為Department的類模板,並在構造函數中,我們需要初始化一個計數器以供以后使用。 我在理解如何在程序的其他地方使用此計數器時遇到麻煩。 我們提供了一個main.cpp文件供您使用,我們不允許對其進行更改。 這些是我堅持的具體說明:
您將創建一個可以將部門名稱作為參數的構造函數,如果為null,它將要求從鍵盤輸入部門名稱並將其存儲。 它還會初始化一個計數器,該計數器跟蹤陣列中的雇員數量,並在您添加,刪除或清除時維護該計數器。
我設法使其正常工作的唯一方法是將構造函數設置為接受兩個參數,一個用於部門名稱,一個用於計數器。 但是提供的main.cpp文件僅允許使用一個參數,即name。
Department.h:
template <class Type>
class Department {
private:
std::string name;
...
public:
Department(const std::string & deptName)
{
int counter = 0;
name = deptName;
}
...
};
Main.cpp(提供,不允許更改):
int main()
{ Department dept1("CIS"); // a department
...
有沒有一種方法可以使用在構造函數之外的構造函數中初始化的計數器,而無需更改Department的參數要求?
有沒有一種方法可以使用在構造函數之外的構造函數中初始化的計數器,而無需更改Department的參數要求?
當然。 創建一個計數器成員變量,並將其用於為類編寫的方法中。
template <class Type>
class Department {
private:
std::string name;
int counter;
public:
Department(const std::string & deptName)
{
counter = 0; // note `int` not needed, as counter is already declared
name = deptName;
}
int getCounter()
{
return counter;
}
void addEmployee(std::string name)
{
counter++;
// do something with adding employees
}
// other methods
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.