VC++通用Singleton实现编译器错误

VC++ Generic Singleton Implementation Compiler Error

本文关键字:编译器 错误 实现 Singleton 通用 VC++      更新时间:2023-10-16

所以,假设我有这样的东西:

template <class T>
class SingletonHolder : public T
{
public:
    static SingletonHolder<T>& getInstance()
    {
        static SingletonHolder<T> instance;
        return instance;
    }

private:
    SingletonHolder()
    {
    }

    virtual ~SingletonHolder()
    {
    }

};//class SingletonHolder

然后说我有一些伪类:

class SomeClassForCheck
{
public:
    int someF()
    {
        return 5;
    }
};

然后是singleton的用法:

typedef SingletonHolder< SomeClassForCheck > SomeClassSingleton;

然后,当我从SomeClasse的CPP文件(在任何函数之外)调用此代码时:[背后的想法是基本上使用这个技巧将创建者函数注册到Singleton Factory类]

//该代码是从.CPP文件中的匿名命名空间调用的SomeClassSingleton::getInstance().someF();

Visual C++尖叫错误:

该声明没有存储类或类型说明符

此代码在GCC和C++Builder下工作。到目前为止,我还没有使用过Visual C++,那么我做错了什么:)?

谢谢!独山

是的,正如@The Dark所说,

在函数调用前面添加声明:

//换句话说:bool-success=:)

bool success=FileIndexerFactory::getInstance().registerNew(MP3_INDEXER,mp3IndexerCreator);

工作时间:)

这就是我在凌晨4:38从编码中得到的:)