对于上下文,我是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/