我一直在寻找约30-45分钟,并检查过拼写错误等。这是我很长一段时间以来第一次使用C ++进行编码,所以语法有点难以理解。我目前正在为我的项目制作基类,所以目前代码非常简单。
Server.h
/*
* Server.h
*
* Created on: Jan 28, 2017
* Author: Jon
*/
#ifndef SERVER_H_
#define SERVER_H_
class Server {
public:
Server();
virtual ~Server();
static Server* getInstance();
private:
static Server* instance;
};
#endif /* SERVER_H_ */
Server.cpp
/*
* Server.cpp
*
* Created on: Jan 28, 2017
* Author: Jon
*/
#include "Server.h"
Server::Server() {
// TODO Auto-generated constructor stub
}
Server::~Server() {
// TODO Auto-generated destructor stub
}
Server* Server::getInstance() {
if (!Server::instance)
Server::instance = new Server();
return Server::instance;
}
单元测试类
#include <iostream>
#include "Server.h"
#include <assert.h>
Server* server;
int main() {
server = Server::getInstance();
return 0;
}
我目前遇到的问题是......
对Server :: instance
的未定义引用我是如何访问我的静态成员的?
答案 0 :(得分:2)
getInstance
是类Server
的静态成员函数,属于命名空间Server
,因此您应该在main()
中使用它:
instance = Server::Server::getInstance();
// ~~~~~~~~
您应该从
更改名称空间Server::instance
内Server
的定义
Server* instance; // a non-member variable in namespace Server
到
Server* Server::instance; // the definition of the static member variable Server::instance
修改强>
编辑(删除命名空间)后,原始用法现在正确。唯一的问题是静态成员Server::instance
的定义。您应该将其添加到Server.cpp
Server* Server::instance; // the definition of the static member variable Server::instance
答案 1 :(得分:0)
您尚未初始化Server::getInstance()
:
变化:
Server* getInstance() {
要:
Server* Server::getInstance() {
@songyuanyao是对的,Server::getInstance()
是静态的,Server
位于Server
命名空间中。要致电getInstance()
,请使用:
Server::Server::getInstance()