构造函数的Singleton方法
Singleton approach on constructor
我试图将一个对象从一个类构造函数传递到另一个类构造器,但它似乎不起作用。下面是代码:
我有以下课程:
class STFT {
public:
template<typename Inverse>
STFT(Inverse begin, Inverse end, size_t x, size_t y, WindowType type)
{
switch(type)
{
case 0:
this->w = Window(0, 100, this->w); // "0" is the type of window, 100 is the size, this-w is a reference to the object.
break;
case 1:
break;
}
}
protected:
Window w;
};
我有多个类Hamming
、Hanning
,它们都继承自类Window
。。我想做的是让Window
中的构造函数决定初始化哪个对象。。
Window(int theWindow, size_t size, Window& w)
{
switch(theWindow)
{
case 0:
w = new Barlett(100);
break;
//**
}
但我得到了以下错误:
no known conversion for argument 1 from 'Barlett*' to 'const Window&'
我想这是因为即使Barlett
是从Window
继承的,我也无法将Window
转换为Barlett
。
如果有人有任何建议,那就太棒了:)
本质上,您试图创建一个工厂,但您是在构造函数中创建的。这没有道理。放在其他地方:
class WindowFactory {
public:
static Window* create(int theWindow, size_t size)
{
Window *w;
switch(theWindow)
{
case 0:
w = new Barlett(100);
break;
//**
}
return w;
}
};
//....
Window *w = WindowFactory::create(0, 10);
注意:为了示例起见,我将其添加为静态方法,但为了灵活性和可测试性,您可能需要实例化一个具体的WindowFactory对象并在其上调用create
。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 如何将Singleton类信号连接到MainWindow类插槽或方法
- 在用户类中包括PYBIND11嵌入式模块的正确方法(作为Singleton类的一部分)是什么?
- Singleton实现:与Singleton类相比,名称空间方法通常更可取吗
- 具有模板化类型的动态类型Singleton.这是可行的方法吗?[提供的解决方案]
- 在其方法中获取singleton实例
- 在Cocos2Dx中实现Singleton的正确方法
- Singleton类贯穿整个项目的方法
- 如何在 c++ 中的 Normal 或 Singleton 类中 GoogleTest 私有方法/枚举类
- 构造函数的Singleton方法
- 作为静态字段的Singleton实例与getInstance()方法中的静态变量
- 访问blackberry 10中的singleton类方法
- 如何在不使用非构造函数的方法的情况下应用singleton设计模式来返回类对象
- 使用Singleton类的最有效方法
- 静态方法与singleton
- c++:logger类,不带全局变量或singleton,或将其传递给每个方法