小编Nik*_*s R的帖子

是否可以使用CRTP访问父类体内的成员?

在使用CRTP时,C++ 11/14/17中是否有一种方法可以访问父类中的子类成员?

template <typename T>
class A {
public:
    using C = typename std::result_of<decltype(&T::next)(T)>::type;
};

class B : A<B> {
public:
    int next() { ... };
};
Run Code Online (Sandbox Code Playgroud)

这应该导致A<B>::CB::C存在int.

c++ templates crtp

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

NetBeans,关闭**任何**自动缩进/自动格式化

我刚试过NetBeans,我真的很喜欢它.
但让我疯狂的是可怕的自动代码格式化!

如果我做一个缺口,我想 压痕,但NetBeans的不断直行的工具定义的格式样式- >选项- >编辑- >格式.

例如,假设我想要执行以下操作:

namespace cn {
    // this has 1 indentation
        // this has 2 indentations
        class Foo;
}
Run Code Online (Sandbox Code Playgroud)

NetBeans将其变为:

namespace cn {
    // this has 1 indentation
        // this has 2 indentations
    class Foo;
}
Run Code Online (Sandbox Code Playgroud)

当键入除了以外的任何字符时,它会自动删除2个缩进中的一个/.

有没有我错过的选项会关闭任何自动缩进?

当使用大括号关闭时,即使这样也可能会关闭非常好的缩进.

netbeans auto-indent

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

我的Python-Java界面,好的设计?以及如何包装JNI函数?

我将编写自己的Python-Java接口.它被编译为DLL并使用ctypes进行包装.

然而,可以找到Java类并分配Java对象.但是如果不使用这些对象方法,那么另一种语言的接口是什么?我的目标是让它尽可能自然.不幸的是,它不只是可以找到Java的方法只能通过名字.

我的模型如下:

JCLASS

  • 此类的实例表示Java类.

JObject

  • 此类的实例表示Java对象.它必须使用JClass实例进行初始化.(当然,后来也应该有构造函数的参数.)

JMethod

  • 表示Java对象的方法.它包含所需方法的名称和签名.签名由初始化时给出的类动态评估.

    例:

    mainMethod  = JMethod('main', JStringArray)
    
    Run Code Online (Sandbox Code Playgroud)

    注意,它JStringArray是表示字符串数组的JClass实例.

    可以将JMethod添加到JClass实例.但是只能从实例化的JObject中调用.

JStaticMethod

  • 就像JMethod一样,但也可以从JClass实例调用它.

内置类型

  • 我这样做JInt,JShort,JLont,JChar,等是内置的包装类型.

    喜欢:

    JInt    = JClass('java/lang/Integer')
    JShort  = JClass('java/lang/Short')
    JString = JClass('java/lang/String')
    
    Run Code Online (Sandbox Code Playgroud)

问题:

  1. 你怎么看待这个设计?
  2. 用于调用Java类/ -object方法的JNI函数都采用可变数量的参数.在阅读了几个关于从一个函数中调用带有变量参数的函数的主题之后,并在SO上问了一个问题,我知道这是不可能的.
    现在,有些函数不采用可变数量的参数而是一个va_list或者什么?我只需要找到一些方法从Java中调用Python的方法!

c++ python java java-native-interface variadic-functions

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

用容器替换狮身人面像

如何替换容器指令?以下不起作用:

.. |sub| container::

    Some text here

    .. image:: img/some_image.png

    Some other text here
Run Code Online (Sandbox Code Playgroud)

错误信息是

WARNING: Substitution definition "sub" empty or invalid.
Run Code Online (Sandbox Code Playgroud)

containers restructuredtext substitution python-sphinx

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

如何将来自不同目录的cpp文件编译到一个文件夹中?

我有几个C++文件分布在几个文件夹中.

a_library/
    file1.cpp
    file2.cpp
    category1/
        file3.cpp
        file4.cpp
Run Code Online (Sandbox Code Playgroud)

他们被保证具有独特的名称.我想编译所有这些C++文件以分离目录中的Object文件obj/.

我有一个包含相对路径的所有源文件的列表,以及它们对应的目标名称.

a_library/file1.cpp
a_library/file2.cpp
a_library/category1/file3.cpp
a_library/category1/file4.cpp

obj/file1.obj
obj/file2.obj
obj/file3.obj
obj/file4.obj
Run Code Online (Sandbox Code Playgroud)

如何制定将C++文件从第一个列表转换为第二个列表中的对象文件的规则?

这些尝试都不能工作:

obj/%.obj: %:cpp
    # ...

%.obj: %.cpp
    # ...

.cpp.obj:
    # ...
Run Code Online (Sandbox Code Playgroud)

我不想写这样的规则:

obj/%.obj: a_library/%.cpp
    # ...

obj/%.obj: a_library/category1/%.cpp
    # ...
Run Code Online (Sandbox Code Playgroud)

c++ windows makefile gnu-make

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

为什么不需要捕获 IllegalArgumentException?

我不知道为什么IllegalArgumentException不类需要被逮住或声明,而其他的异常有(例如java.net.MalformedURLException)。

public void foo() {
    throw new IllegalArgumentException("spam");
}

public void bar() throws MalformedURLException { // required
    throw new MalformedURLException("ham");
}
Run Code Online (Sandbox Code Playgroud)

我知道Errors 不必声明,因为它们不打算被捕获。

我想声明一个新的异常,它也不需要被捕获。

java exception custom-exceptions throws

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

范围会话上的事件侦听器

我正在尝试将事件侦听器添加到before_commitFlask应用程序内的SQLAlchemy会话事件中.在执行以下操作时

def before_commit(session):
    for item in session:
        if hasattr(item, 'on_save'):
            item.on_save(session)

event.listen(db.session, 'before_commit', before_commit)
Run Code Online (Sandbox Code Playgroud)

我明白了

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "app.py", line 60, in <module>
    event.listen(db.session, 'before_commit', before_commit)
  File "C:\Python27\lib\site-packages\sqlalchemy\event\api.py", line 49, in listen
    _event_key(target, identifier, fn).listen(*args, **kw)
  File "C:\Python27\lib\site-packages\sqlalchemy\event\api.py", line 22, in _event_key
    tgt = evt_cls._accept_with(target)
  File "C:\Python27\lib\site-packages\sqlalchemy\orm\events.py", line 1142, in _accept_with
    "Session event listen on a scoped_session "
sqlalchemy.exc.ArgumentError: Session event listen on a scoped_session requires that its creation …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy event-listener flask flask-sqlalchemy

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

可以访问Context的Jinja Extension

是否可以编写一个Jinja2扩展,在渲染时可以访问模板上下文?我想编写一个访问上下文变量的扩展,并根据该变量输出一些数据.我找不到有关如何编写此类扩展的足够信息.

现在,我有这个:

class CsrfExtension(jinja2.ext.Extension):
    r""" Adds a {% csrf %} tag to Jinja. """

    tags = set(['csrf'])
    template = '<input type="hidden" name="csrfmiddlewaretoken" value="%s">'

    def parse(self, parser):
        token = next(parser.stream)
        lineno = token.lineno
        return self.call_method('_render_csrf', lineno=lineno)

    def _render_csrf(self, value, name, *args, **kwargs):
        csrf_token = somehow_get_variable('csrf_token')
        return jinja2.Markup(self.template % csrf_token)
Run Code Online (Sandbox Code Playgroud)

但在 foo.jinja

<!DOCTYPE html>
<html>
    <body>
        <h1>This is a Test</h1>
        {% csrf %}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我明白了

SyntaxError at /
invalid syntax (foo.jinja, line 7)
Run Code Online (Sandbox Code Playgroud)

我以为我会得到一个NameError,因为somehow_get_variable()没有定义.我需要知道a)如何从当前上下文中获取变量,以及b)如何正确编写扩展.

还有,为什么7号线?该{% csrf %}标签是第5行甚至当我修剪 …

python jinja2

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

手动创建Python Traceback

是否可以在Python中创建自定义回溯?我正在尝试编写一个raise_from()模仿Python 3的函数raise ... from ....

def raise_from(exc, cause):
    """ Raises the Exception *exc* from the calling stack-frame,
    settings its ``__cause__`` to *cause*. """

    exc.__cause__ = cause

    try: raise Exception
    except Exception:
        tb = sys.exc_info()[2]

    # Remove the last traceback entry.
    prelast_tb = tb
    while prelast_tb.tb_next:
        prelast_tb = prelast_tb.tb_next
    prelast_tb.tb_next = None

    raise type(exc), exc, tb
Run Code Online (Sandbox Code Playgroud)

不幸的是,traceback实例的属性是只读的.

python exception python-2.x traceback

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

Windows 上使用 print() 和管道输出时出现“OSError: [Errno 22] Invalid argument”

当将 Python 脚本的输出传递到带有无效参数的管道时,我遇到了一些(对我来说)奇怪的行为wc

\n\n
\xce\xbb python test.py\nHello!\n\xce\xbb python test.py | wc -li\nwc: unknown option -- i\nTry 'wc --help' for more information.\nException ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'>\nOSError: [Errno 22] Invalid argument\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里发生了什么?

\n\n

我的配置是

\n\n
    \n
  • Windows 10
  • \n
  • 指挥者
  • \n
  • msysgit 2.5.1.windows.1
  • \n
\n

python windows msysgit wc

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