对于上下文,我是C++的全新用户,我使用Java编程。因此,我对C++语法非常不满意,并且需要愚蠢的答案。

我似乎无法理解为什么会收到此错误。我检查了多个答案,但它们都是原始变量。我正在使用对象,可能会导致某些错误,或者我只是盲目。

这是我的类(class),重点是public下的3个静态变量

class SuperMarket
{
    private:
        int count;
        int totalService;
        int totalWait;
    public:
        static CustomerQ * regularLine; // this
        static CustomerQ * expressLine; // this
        static EventQ * eventQueue; // this
    // Constructors
        SuperMarket();
    // Destructor
        ~SuperMarket();
    // Accessors
        void start(int choice, string file);
        static void loop();
    // Mutators
};

我在构造函数中初始化静态成员
SuperMarket::SuperMarket() // Constructor
{
    count = 0;
    totalService = 0;
    totalWait = 0;
    regularLine = new CustomerQ(); *error*
    expressLine = new CustomerQ(); *error*
    SuperMarket::eventQueue = new EventQ(); *error*
}

以及我在其他任何地方做的SuperMarket::Object我也得到了错误。我尝试同时使用SuperMarket::和,但我的错误并没有消失。当然,在我的SuperMarket类(class)之外,我也会做SuperMarket::。

最佳答案

您只声明了静态类成员;您需要以与对函数相同的方式在类之外定义它们。

SuperMarket源文件中:

// You probably want to initialize outside of the constructor, because otherwise it would
// erase your queues whenever a new instance of SuperMarket is created.
CustomerQ* SuperMarket::regularLine = new CustomerQ();
CustomerQ* SuperMarket::expressLine = new CustomerQ();
EventQ* SuperMarket::eventQueue = new EventQ();

SuperMarket::SuperMarket() // Constructor
{
    // Probably don't initialize your statics in here
    // ...

但是,在这种情况下,我认为这些成员保持静态是没有意义的。静态表示应在包含类的所有实例之间共享它们;不同的SuperMarket共享同一行客户真的有意义吗?

关于c++ - 带有对象的C++ undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49037689/

10-10 09:11