我的程序出了什么问题?

what wrong with my programm

本文关键字:问题 什么 程序 我的      更新时间:2023-10-16
class blueprint1{
private:
    int serialnum;
    int static tracker=0;
public:
    blueprint1(){
        tracker += 1;
    }
    void output(){
        serialnum = tracker;
        cout << "The serial number of object is "<<serialnum<< endl;
    }
};
int main()
{
    blueprint1 one;
    one.output();
    blueprint1 two;
    two.output();
}

它给出了errorError 1 error LNK2001: unresolved external symbol "private: static int blueprint1::tracker" (?tracker@blueprint1@@0HA)

您必须在类声明之外实际定义静态类变量。因此,在您的cpp文件中添加以下行:

int blueprint1::tracker=0;

编辑:对不起,我在写正确的代码行之前不小心提交了我的答案

参见代码中静态变量的初始化。
应该初始化为int blueprint1::tracker = 0;

class blueprint1{
    private:
        int serialnum;
        int static tracker;
    public:
        blueprint1(){
            tracker += 1;
        }
        void output(){
            serialnum = tracker;
            cout << "The serial number of object is "<<serialnum<< endl;
        }
    };
    int blueprint1::tracker = 0; //this is the way you should initialize static variable 
    int main()
    {
        blueprint1 one;
        one.output();
        blueprint1 two;
        two.output();
    }