Привет, ребята, с моим, как я начал изучать C++ вчера.'t' не был объявлен в этой области
Я хочу создать объекты, зависящие от значений, которые я читаю из файла. Однако он говорит, что значение t не объявлено в пределах области:
Также я понимаю, что способ, которым я выполняю свой код, не обязательно является лучшей практикой. В качестве общей концепции кодирования мне было интересно, как бы я инициализирует т заранее, так как объекты, которые я создаю, зависит от значения данного
Вот код:
while(getline(linestream,value,',')){
if(i==0){
cout<< "Type " << value << endl;
type = value;
}
else if(i==1){
cout<< "Code " << value << endl;
code = value;
}
else if (i==2){
cout << "Count " << value << endl;
count = atoi(value.c_str());
}
else if (i ==3){
cout << "Price " << value << endl;
price = atoi(value.c_str());
}
else if(i ==4){
cout << "Other " << value << endl;
other = value;
}
i++;
if(i ==5){
if(type == "transistor"){
Transistor *t = new Transistor(code,count,price,other);
}else if (type == "IC"){
IC *t = new IC(code,count,price,other);
}else if (type == "resistor"){
Resistor *t = new Resistor(code,count,price,other);
}else if (type == "capacitor"){
Capacitor *t = new Capacitor(code,count,price,other);
}else{
Diode *t = new Diode(code,count,price,other);
}
if(counter ==0){
LinkedList list(t);
}else{
list.tailAppend(t);
}
}
}
Кроме того, все классы, которые я Создание потенциальных объектов для всех происходит из базового класса StockItem
«Транзистор», «Резистор» и т. Д. Все подклассы некоторого класса (например, «Компонент»)? Если это так, тогда вы можете объявить 'Компонент * t' перед проверками' if', а затем использовать полиморфизм для инициализации этого в зависимости от выполняемого оператора 'if'. – ArchbishopOfBanterbury
Да @ArchbishopOfBanterbury (любят имя btw) все они производны от базового класса, но его абстрактный базовый класс – Blarsssss
@Blarsssss. Все в порядке, вы все же можете создать указатель на этот базовый класс и затем назначить ему экземпляр производного класс, как вы это делали в проверках 'if', например: declare' Base * t', а затем введите 't = новый Transistor (...)' и т. д. для каждого if-statement. – ArchbishopOfBanterbury