所以,让我们说我有这样的事情:
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 ++中工作过,所以我做错了什么:)?
谢谢! 独山
答案 0 :(得分:0)
是的,正如@The Dark所说,
在函数调用前添加一个声明:
//换句话说:bool success = :))
bool success = FileIndexerFactory :: getInstance()。registerNew(MP3_INDEXER,mp3IndexerCreator);
工作:)
这就是我在凌晨4:38从Coding获得的内容:)