दृष्टिकोण की जांच करने के लिए बेहतर तरीका है: PermanentEmployee और ContractEmployee: 1जो ऑब्जेक्ट प्रकार
class Employee
{
public:
virtual int calculateSalary() = 0;
};
class PermanentEmployee : public Employee {
const int salaryPerMonth;
public:
PermanentEmployee(int sal) : salaryPerMonth(sal){}
int calculateSalary() {
return salaryPerMonth;
}
};
class ContractEmployee : public Employee {
const int wagesPerHr;
int totalHour;
public:
ContractEmployee(int sal) : wagesPerHr(sal), totalHour(0){}
void setWorkingDuration(int time) {
totalHour = totalHour + time;
}
int calculateSalary() {
return wagesPerHr * totalHour;
}
};
class Manager {
list<Employee *> ls;
public:
void assignWorkingHour() {
list<Employee *>::iterator it;
for(it = ls.begin(); it != ls.end(); it++) {
Employee *emp = *it;
ContractEmployee* contractEmp = dynamic_cast<ContractEmployee* >(emp);
if(contractEmp) {
contractEmp->setWorkingDuration(5);
}
}
}
};
समस्या में, वहाँ की कर्मचारी 2 प्रकार हैं। प्रबंधक नामक एक वर्ग है जिसमें उसके तहत काम कर रहे सभी कर्मचारियों की एक सूची है। अनुबंध के लिए कर्मचारी, इसे फ़ंक्शन सेट वर्किंग अवधि का आह्वान करना पड़ता है, जिसे विधि असाइन में वर्किंग वर्किंग वर्किंग में शामिल किया जा रहा है।
समस्या है: वर्ग कर्मचारी में एक और सदस्य को शामिल
enum TypeOfEmployee {CONTRACT, PERMANENT};
: यहाँ कर्मचारी के प्रकार dynamic_cast ऑपरेटर और प्रबंधक द्वारा निर्धारित किया जा रहा है कर्मचारी की
approach2 प्राप्त वर्ग के सभी प्रकार के बारे में पता करने के लिए है
और कर्मचारी
के प्रकार का निर्धारण करने के लिए TypeOfEmployee की जांच करें कृपया बताएं कि कौन सा बेहतर है या कोई वैकल्पिक दृष्टिकोण है?
प्रश्न की तरह। गतिशील_कास्ट की लागत का उत्सुकता। – Lou
http://www.nerdblog.com/2006/12/how-slow-is-dynamiccast.html आपके लिए प्रासंगिक पढ़ा जा सकता है। –
क्या यह एक होमवर्क प्रश्न है? मैं सिर्फ उत्सुक हूँ। –