我想拥有一个可以使其他类单身的类,所以我这样写:
example$Flag <- ifelse(str_detect(as.character(example$y), as.character(example$x)), 1, 0)
这就是我的使用方式:
example
x y Flag
1 hungry i'm hungry 1
2 fly i believe i can fly 1
3 day a hard day's night 1
4 dog cat 0
但是这里template <typename Class,
typename T = std::enable_if<std::is_class_v<Class>>>
struct singleton
{
public:
static Class* get_instance(void)
{
if (!object)
{
object = new Class;
}
return object;
}
protected:
static Class* object;
singleton(void) = default;
private:
singleton(const singleton&) = delete;
singleton& operator=(const singleton&) = delete;
};
template <typename Class, typename T>
Class* singleton<Class, T>::object{nullptr};
不是Singleton,因为在struct some_base_class : public singleton<some_base_class>
{
private:
size_t m_variable;
public:
static auto make(const size_t var)
{
auto o{singleton<some_base_class>::get_instance()};
o->m_variable = var;
return o;
}
};
类中,我们将默认构造函数设为受保护的成员,我试图将其构造为私有成员,但出现了此错误:
some_base_class
为什么?我只是将其设为基类的私有成员,并将其标记为singleton
而不是use of deleted function ‘some_base_class::some_base_class()’
!如何在基类中使默认构造函数私有?
答案 0 :(得分:1)
如何在基类中使默认构造函数私有?
您可以使用访问说明符:
struct base {
private: // this here
base() = default;
我收到此错误:
use of deleted function ‘some_base_class::some_base_class()’
为什么?
因为您尝试默认初始化派生类。
并且由于基的默认构造函数是私有的,因此将删除派生类型的隐式生成的构造函数。这是因为由于无法访问构造函数而无法构造基础。
答案 1 :(得分:0)
看起来此错误是指您所参数化的构造函数 标记为删除... 如果可以的话,请使用类而不是结构,因为默认情况下,如果不指定公共成员或受保护成员,则所有成员都是私有成员。