c++ Singleton by reference use
c++ Singleton by reference use
我已经阅读了StackOverflow中的一些Wiki,并为Randomizer类编写了以下头文件:
class Randomizer
{
public:
static Randomizer& instance(void);
int nextInt(int);
int nextInt(int, int);
int die(int);
double nextDouble(void);
char randomChar(const std::string&);
private:
Randomizer(void) {};
/* No implementation of the following methods */
Randomizer(Randomizer const&);
void operator= (Randomizer const&);
};
我还实现了类内部的一些方法,比如nextInt等等。
我不确定如何创建这个Singleton类的实例,即如何在main()中编写测试驱动器?
我试过了:
int main()
{
Randomizer r;
r = Randomizer::instance();
}
编译器说几个错误:
In file included from Randomizer.cpp:11:0:
Randomizer.h: In function ‘int main(int, char**)’:
Randomizer.h:22:9: error: ‘Randomizer::Randomizer()’ is private
Randomizer(void) {};
^
Randomizer.cpp:56:16: error: within this context
Randomizer r;
^
In file included from Randomizer.cpp:11:0:
Randomizer.h:25:14: error: ‘void Randomizer::operator=(const Randomizer&)’ is private
void operator= (Randomizer const&);
^
Randomizer.cpp:57:7: error: within this context
r = Randomizer::instance();
^
谢谢你的帮助。
你说你想要一个singleton,但是:
Randomizer r;
这通过尝试调用默认的空构造函数来构造Randomizer
的新实例。因此,您并没有将其用作singleton,此外,您还声明了构造函数private。
r = Randomizer::instance();
在这里,您正试图将一个singleton复制分配给另一个,您已明确声明为private。
也许你打算使用:
Randomizer &r = Randomizer::instance()
如果随机化器本身没有可视状态,那么最好使用const Randomizer& instance()
方法,而不是可变引用。
此代码尝试复制Randomizer实例。如果你不想直接使用instance()
调用的结果,你应该使用返回的引用:
Randomizer &r = Randomizer::instance();
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- C++ "error: invalid use of void expression"
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 不断"Attempting to reference a deleted function"
- 收到错误"invalid use of non-static data member 'stu::n' "
- 模式"allocate memory or use existing data"
- std::iterator::reference 必须是引用吗?
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- Is it good to use SDL_PIXELFORMAT_UNKNOWN?
- C++ "Invalid use of 'this' in non-member function" ,
- 这是什么意思:"member reference type 'Human *' is a pointer; did you mean to use '->'?"
- c++ Singleton by reference use