标签: extend

扩展具有私有构造函数和析构函数的单例类会给出编译时警告

我正在使用 C++ (Qt)。

我正在扩展一个单例类,而一个子类只有静态方法。我没有创建子类的任何实例。Singleton 类的构造函数和析构函数都是私有的,所以我无法访问它的构造函数和析构函数。

 class Singleton 
 { 
   private :
           Singleton();
           ~Singleton();
   public :
      // some methods.
 }

 class SubClass : public Singleton
 {
   // There is NO constructor or destructor
   public:
   // Only some STATIC methods.
 }
Run Code Online (Sandbox Code Playgroud)

我使用调用父类的 getInstance()SubClass::getInstance()。我只使用 SubClass 的静态方法(所以不需要实例化 SubClass)。

所以我的问题是,我在编译时收到警告 -

“无法生成子类:析构函数,因为无法访问基类析构函数”。

我想摆脱这些警告,还想知道这个设计是否违反了单例设计模式?


我想实现什么?

我正在为应用程序创建一个记录器。我正在使用第三方库的记录器类(QxtCore 库的 QxtLogger)。这个 QxtLogger 类是一个单例,具有私有的构造函数和析构函数。我想要一个包含 QxtLogger 拥有的所有方法和一些额外的静态方法(特定于我的应用程序)的单例类。

因此,我创建了一个继承 QxtLogger 的类并为其添加了一些静态方法。我担心的是扩展生成警告的单例类(因为基类构造函数和析构函数不可访问)。所以我该怎么做?

c++ inheritance singleton design-patterns extend

2
推荐指数
1
解决办法
2724
查看次数

使用相同的规则组合扩展和混合

好的!我在 sass 中有几个扩展,比如

%heading
%paragraph
%gutter
Run Code Online (Sandbox Code Playgroud)

等等...

我想在媒体查询中重用 thouse,但这不起作用。我知道。

然后我想出了将我所有的扩展也作为 mixin 的想法。所以当我想在媒体查询中使用它们时,我只需使用 mixin。例如

.my-widget {
    @extend %gutter;
    @media.... {
        @include gutter-other;
    }
}
Run Code Online (Sandbox Code Playgroud)

因为我不想再写我所有的规则。那我该怎么写我的sass呢?

我试过

%my-extend, @mixin my-extend {
   ...
}
Run Code Online (Sandbox Code Playgroud)

但这没有用。

任何想法如何处理这个?

css sass extend mixins

2
推荐指数
1
解决办法
4295
查看次数

用C++"扩展"Struct

我说"延长"是因为在谷歌搜索后我不确定这是我正在努力完成的正确名称.

基本上我正在尝试做的是创建一个结构(只是为了好玩,让我们也包括这个问题中的类),其中包含一些空白变量,然后创建另一个结构或类,继续父进程离开,填写那些变量.

所以像这样:

struct parent{

    int foo;
    int bar;
};

struct daughter : parent{
    foo=1;
    bar=3;
};

struct son : parent {
    foo=10;
    bar=20;

    int foobar;
};
Run Code Online (Sandbox Code Playgroud)

后来,我可能需要进一步扩展这棵树:

struct grandson : son {
    foo=50;
    bar=900;
    foobar=10000;
};
Run Code Online (Sandbox Code Playgroud)

怎样才能解决这个问题?

编辑:

@Everyone:所以,我可以解释一下我正在尝试做什么,你可以用更好的方法来解决它,谁知道,也许这些方法要好得多.然而,首先,马上,我只是好奇我能问的是什么......

我遗漏了一些东西:

struct parent{
    int foo;
    int bar;
    int foobar;

    int add(int x, int y){
        return x+y;
    };

struct son : parent {
    foo=12;
    bar=13;
    foobar=add(foo,bar);
Run Code Online (Sandbox Code Playgroud)

c++ inheritance struct extend

2
推荐指数
1
解决办法
9152
查看次数

如何扩展自己的库?

我是 codeigniter 的新手,想在我的第一个扩展另一个库的 ci 应用程序中添加一个库

class Mylib {}
Run Code Online (Sandbox Code Playgroud)

/application/libraries/Mynewlib.php:

class Mynewlib extends Mylib{}
Run Code Online (Sandbox Code Playgroud)

我必须将 Mylib.php 放在哪里以及如何加载 Mylib?

谢谢!

codeigniter extend libraries

2
推荐指数
1
解决办法
6393
查看次数

在 Tailwind CSS 版式中覆盖 65ch 最大宽度

我正在使用带有 Tailwind 和 Typography 的 Jekyll 模板,并且我有兴趣覆盖每行默认的最大宽度 65ch 限制。

默认设置是max-w-prose,我尝试将 和max-w-none一起设置为父元素prose,但它似乎不起作用(尽管它与对齐方式混淆)。我也尝试过在每个元素中设置max-w-nonewith prose(警惕不必要的覆盖到 65ch),但这也没有削减它。

我认为这可以通过 tailwind.config.js 文件来完成,例如:

  theme: {
    extend: {
      typography: {
        DEFAULT: {
          css: {
            'prose': {
              'max-width': '100ch'
            },
            'max-w-prose': {
              'max-width': '100ch'
            },
        ...
Run Code Online (Sandbox Code Playgroud)

但我不明白。任何提示都非常受欢迎!

css typography extend prose tailwind-css

2
推荐指数
1
解决办法
5956
查看次数

没有简单的方法在Java中"包含"?

当逻辑上看起来好像很简单,那么事实证明它完全是错综复杂的,

我没有太多使用Java,所以请原谅我的无知.这是我想要做的:

我在一个.java文件中有一个很好的干净算法,我想从一个初始化的数组中提供它.该数组包含超过40,000个元素,因此我希望它本身就是一个单独的文件.我该怎么做呢?有没有严肃的方法只是说{在这里插入filename.txt的内容}?

java import insert include extend

1
推荐指数
2
解决办法
357
查看次数

Python - Neaten this append/extend条件

我有一个方法,我将接受单个对象或对象列表.我想添加传递给另一个列表的内容.目前,我的方法如下所示:

def appendOrExtend(self, item):
  if type(item).__name__ == "list":
    self.list.extend(item)
  else:
    self.list.append(item)
Run Code Online (Sandbox Code Playgroud)

在我看来应该有更多的Pythonic方式实现这一点,你能提出一个吗?

python list append extend

1
推荐指数
1
解决办法
1656
查看次数

从不调用XmlSerializer中的重写反序列化

我慢慢地感觉到我的理智在边缘磨损,而我的思绪慢慢消失.

我想扩展XmlSerializer,由于某种原因它不支持反序列化通知.

我有以下代码:

public class NotificationXmlSerializer : XmlSerializer
{
    public NotificationXmlSerializer(Type type)
        : base(type)
    { 
    }

    protected override object Deserialize(XmlSerializationReader reader)
    {
        var x = base.Deserialize(reader);
        var methods = x.GetType().GetMethods().Where(method => method.GetCustomAttributes(true).Any(attr => attr is OnDeserializedAttribute));

        return x;
    }
}
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用它:

    using (MemoryStream fs = new MemoryStream())
    {
        var x = new NotificationXmlSerializer(typeof(int));
        x.Serialize(fs, 5);
        fs.Seek(0, SeekOrigin.Begin);
        var y = x.Deserialize(fs);
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果我在我的Deserialize覆盖中放置一个断点,它永远不会被击中!即使我故意在那里抛出异常,程序功能也是正常的,所以我相信它永远不会被击中.

为什么他们会让我覆盖一个内部方法Deserialize而不会让我影响它的任何东西?

我究竟做错了什么?

最好的问候,马克斯

c# extend xmlserializer

1
推荐指数
1
解决办法
1641
查看次数

Jquery扩展现有功能

我正在寻找一种方法来扩展现有的Jquery函数,为它提供更多的选项/参数.

我想要使​​用的是$ .ajax但这适用于任何jquery函数.

我希望能够调用这样的函数:

$.adv_ajax()
Run Code Online (Sandbox Code Playgroud)

这将是$ .ajax函数的扩展版本,如下所示:

 $.adv_ajax({
  custom_parameter: "abc", //my custom one
  url: "test.html",
  context: document.body,
  success: function(){
    $(this).addClass("done");
  }
});
Run Code Online (Sandbox Code Playgroud)

jquery extend

1
推荐指数
1
解决办法
4520
查看次数

如何包含扩展classmethods并正确引用class var的模块

我的期望是在评论中.

require 'logger'

module Logging
  attr_accessor :logger

  def logger
    return @logger if @logger # allow items to have own loggers
    @@logger ||= Logger.new(STDERR)
    puts "Instance Class REF ID#{@@logger.__id__}"
    puts "Class ID #{self.class.logger.__id__}"
    @@logger
  end

  module ClassMethods
    def logger= logger
      @logger = logger
    end

    def logger
      @logger ||= Logger.new(STDERR)
      puts "Class Instance REF ID #{@logger.__id__}"
      @logger
    end
  end

  def self.included(base)
    base.extend(ClassMethods)
  end
end

class Test

  include Logging

  def wow
    logger.info 'wow'
  end
end

t = Test.new

# should be the same …
Run Code Online (Sandbox Code Playgroud)

ruby include extend

1
推荐指数
1
解决办法
5674
查看次数