ошибки компиляции в синглтоне внутри головного файла - PullRequest
1 голос
/ 26 февраля 2012

это мой класс:

#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 я пытался Google, но яне уточнять связь между этой ошибкой сообщения компилятора и моим кодом ..

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

Вы должны изменить это:

static pointPool* getInstance()

К этому:

static PointPool* getInstance()

Точки с запятой после вашего конструктора и деструктора также не нужны. И, как упоминал Эд, определение PointPool :: instance не должно быть в заголовке.

1 голос
/ 26 февраля 2012

У вас также есть опечатка в pointPool*, которая должна быть PointPool*.Исправление должно очистить обе ошибки.

1 голос
/ 26 февраля 2012

Эта строка PointPool* PointPool::instance = 0; должна находиться в файле .cpp, иначе у вас будет несколько копий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...