VC ++通用单例实现编译器错误

时间:2014-08-29 02:08:03

标签: c++ templates visual-c++ generics singleton

所以,让我们说我有这样的事情:

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 ++中工作过,所以我做错了什么:)?

谢谢! 独山

1 个答案:

答案 0 :(得分:0)

是的,正如@The Dark所说,

在函数调用前添加一个声明:

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

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

工作:)

这就是我在凌晨4:38从Coding获得的内容:)