在头文件内的singleton中编译错误
compile errors in singleton inside head file
这是我的类:
#ifndef POINTPOOL_H_
#define POINTPOOL_H_
#include <list>
#include <iostream>
#include "ofPoint.h"
// adapted from https://gist.github.com/1124832
class PointPool
{
private:
std::list<ofPoint*> resources;
static PointPool* instance;
PointPool() {};
public:
~PointPool() {}; // 1
static pointPool* getInstance() // 2
{
if (instance == 0)
{
instance = new PointPool();
}
return instance;
}
Resource* getPoint()
{
if (resources.empty())
{
std::cout << "Creating new." << std::endl;
return new ofPoint();
}
else
{
std::cout << "Reusing existing." << std::endl;
ofPoint* resource = resources.front();
resources.pop_front();
return resource;
}
}
void disposePoint(ofPoint* object)
{
object->x = 0;
object->y = 0;
object->z = 0;
resources.push_back(object);
}
};
PointPool* PointPool::instance = 0;
#endif /* POINTPOOL_H_ */
我得到
expected unqualified-id at end of input
评论1和
expected ‘;’ before ‘*’ token
在评论2中,我试图用谷歌搜索,但我没有找到这个编译器消息错误和我的代码之间的链接。。
您需要更改以下内容:
static pointPool* getInstance()
对此:
static PointPool* getInstance()
构造函数和析构函数后面的分号也是不必要的。而且,正如Ed所提到的,PointPool::instance的定义不能在头中。
这一行PointPool* PointPool::instance = 0;
应该在.cpp文件中,否则将有多个副本。
您在pointPool*
中也有一个拼写错误,应该是PointPool*
。修复它应该可以清除这两个错误。
相关文章:
- std::is_base_of表示ctor编译错误
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何修复sfml c++代码编译错误
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vscode下的Arduino代码出现意外编译错误
- 第三方 API 中的编译错误 - Visual Studio
- std::cout输出int时出现编译错误
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 提升图广度优先搜索前置编译错误
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- 我在C++中遇到了这个奇怪的编译错误
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 现代OpenGL和GLEW Libraray的编译错误
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- C ++程序编译错误,找不到/访问文件
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么传递非静态成员函数会导致编译错误?