' t'未在此范围内声明

时间:2016-04-07 19:22:07

标签: c++

嗨,大家好,我昨天开始学习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派生的

2 个答案:

答案 0 :(得分:2)

t不适合您使用。您在if语句之后在块中声明了它。相反,您应该在代码块之前将其声明为基类,并在每个if语句之后将其初始化为子类(您应该使用switch代替它,但这不是代码查看)

答案 1 :(得分:1)

在C ++中,所有循环和if子句都有自己的范围。因此,您应该在t子句之外声明if,并且应该在循环之外声明list。此外,C ++是具有严格变量类型的语言,因此您无法更改t的类型,也无法将不同类型的值推送到列表中。为此,您应该使用没有类型的指针void*或创建父类,并从该类派生用于t的所有不同类型(然后你冷使用指向基类的指针在这种情况下t)。如果你不知道如何做到这一点,你最好在C ++中阅读一些关于面向对象编程的书籍,在这个答案中解释的主题太多了。

关于这个主题的好书可能是Bjarne Stroustrup的书之一,例如here