小编Sil*_*pur的帖子

使用在C++中动态分配的数组有什么问题?

如下代码:

int size = myGetSize();
std::string* foo;
foo = new std::string[size];
//...
// using the table
//...
delete[] foo;
Run Code Online (Sandbox Code Playgroud)

我听说在某些情况下这样的使用(不是这个代码,但是整个动态分配)可能是不安全的,并且只能用于RAII.为什么?

c++ dynamic-allocation

30
推荐指数
3
解决办法
4881
查看次数

编写JSON时如何防止循环循环的pythonic方法是什么?

我有两个类A和B,每个类在列表中存储对另一个类的对象的引用

class A:
    def __init__(self,name):
        self.name = name
        self.my_Bs = []
    def registerB(self,b):
        self.my_Bs.append(b)

class B:
    def __init__(self,name):
        self.name = name
        self.my_As = []
    def registerA(self,a):
        self.my_As.append(a)
Run Code Online (Sandbox Code Playgroud)

现在,我的应用程序将构建两个列表,一个具有A的对象,一个B的对象,并且具有交叉引用。

# a list of As, a list of Bs
list_of_As = [A('firstA'), A('secondA')]
list_of_Bs = [B('firstB'), B('secondB')]
# example of one cross-reference
list_of_As[0].registerB(list_of_Bs[1])
list_of_Bs[1].registerA(list_of_As[0])
Run Code Online (Sandbox Code Playgroud)

很显然,如果我叫json.dumps()任上list_of_...,我得到一个循环引用错误。

我想要解决这个问题的方法是转储带有元素name属性列表而不是对象本身列表的JSON :

# This is what I want to obtain for
# the …
Run Code Online (Sandbox Code Playgroud)

python serialization json

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

Symfony2 表单未选中的复选框未考虑在内,为什么?

当我发送带有未选中复选框的表单时,如果相关实体属性等于true,则它不会更改为false

反之亦然(当发送带有选中复选框的表单时将属性设置为 true)效果很好,所有表单其他字段也保存。

以下是我构建表单并声明相关属性的方法:

// --- Form creation function EntityType::buildForm() ---
$builder->add('secret', 'checkbox', array( 'required' => false ));

// --- Entity related property, Entity.php file ---
/** @ORM\Column(name="secret", type="boolean") */
protected $secret;
Run Code Online (Sandbox Code Playgroud)

编辑:出现此问题是因为表单是使用PATCH request提交的。

在 Symfony 中,该Form::submit方法由请求处理程序使用以下行调用:

$form->submit($data, 'PATCH' !== $method);
Run Code Online (Sandbox Code Playgroud)

因此,在 PATCH 请求的情况下,该Form::submit $clearMissing参数被设置为,从而将未发送字段保留为其旧值。false

但我不知道如何解决这个问题。{secret: false}如果我在未选中复选框时显式地将 JSON 传递给 Symfony 框架,它会将其解释为"false"字符串并认为是一个真值,从而考虑选中的复选框...


注意。我对使用链接到 Doctrine Simple Array 属性的字段类型( with和to )的复选框数组choice …

forms checkbox symfony

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

如何从Google表格中访问单元格值?

我最难找到有关我需要的信息.我想我不是在寻找合适的地方,因为这是非常基本的.无论如何.

有人在某处创建了一个Google表格,任何人都可以访问链接.我想检索给定单元格的值.

我希望能够从一个简单的网页(或PHP中的服务器端,但最好是JS)在JS中执行以下操作:

AGoogleApiIHopeExists.setApiKey("<MY_API_KEY");
var value = AGoogleApiIHopeExists
    .getSheet("AJEIDNNS6886SDHSKN67HBS7BA6SD555DSHD")
    .getTab("MyTabInsideMySheet")
    .getCell("B:17");
Run Code Online (Sandbox Code Playgroud)

我觉得这有可能让我有点天真......

如果没有,我应该在哪里寻找更多信息?

javascript php google-api google-sheets google-spreadsheet-api

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

在Gecode中,从评价函数访问家庭/空间变量值

Gecode中,我使用评价函数在分支时选择变量。

为了计算变量 v 的优点,我需要访问一些其他变量值,但看起来在调用优点函数时,空间变量尚未分配任何值:

Exception: IntVar::val: Attempt to access value of unassigned variable.
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?有没有办法访问评价函数中的变量值?

gecode

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

无法使用 std::map::emplace 插入没有复制构造函数的类的对象

我正在尝试编译以下代码:

\n
#include <map>\n#include <condition_variable>\n\nclass MyClass\n{\npublic:\n    MyClass(): m_cv() {}\n    std::condition_variable m_cv; //just to illustrate that a copy constructor is not obvious to write\n};\n\nint main()\n{\n    std::map<std::string,MyClass> testmap;\n    testmap.emplace("key",MyClass());\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编译在最后一行失败(emplace方法调用)失败,并出现一个很长的错误,如下所示:

\n
error: no matching function for call to \xe2\x80\x98std::pair, MyClass>::pair(const char [4], MyClass)\n
Run Code Online (Sandbox Code Playgroud)\n

通过反复试验,我了解到错误来自于缺少MyClass. 如果我添加一个,或者如果我用基本类型替换条件变量属性(int例如),错误就会消失。然而我不确定我的分析,最重要的是,我不明白为什么复制构造函数MyClass这里需要一个复制构造函数。

\n

所以我的问题是双重的:

\n
    \n
  1. 为什么需要复制构造函数?
  2. \n
  3. 如何重写我的代码以便不需要复制构造函数(由于类的复杂性,编写起来有点棘手,为简洁起见,此处省略)?
  4. \n
\n

c++ stdmap copy-constructor c++14

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

C++提取运算符:如何知道读取的位数?

我读了一个整数:

is >> myInteger;
Run Code Online (Sandbox Code Playgroud)

现在我想知道读了多少位数(我说的是可能的前导零).我怎样才能做到这一点?

c++ extraction-operator

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

在#define子句中,如何使预处理器替换变量名中的参数?

我有以下代码:

#define MY_MACRO(PARAM) int PARAM_int; double PARAM_double; [subsequent instructions]
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,这意味着PARAM不会在变量名称中被替换.这可以解决吗?

c macros c-preprocessor

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

C++多态性通过C回调丢失

注意:为了清楚起见,在下面的代码片段中省略了constuctors/destructors和includes.

我正在使用一个函数registerCallback需要以下参数的库:

  • 一个C风格的函数指针,用于注册回调
  • 一个void*"用户-数据"传输任何一个认为合适的

因为我用C++编写代码而我希望我的回调函数调用一个类成员方法,由于registerCallback第一个参数的C样式,我不能直接做,我已经写了这个函数:

extern C {
    void handler( void* userData ) {
        (static_cast<Base*>(userData))->handle();
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用的registerCallback功能如下:

class Base {
    public void handle() {}
};
...
Base b;
registerCallback( handler, &b );
Run Code Online (Sandbox Code Playgroud)

这到目前为止运作良好.

现在,让我们添加一些复杂性:

Baseclass有一个toto名为by 的纯虚函数handle(),我有Child1Child2扩展的类Base.

class Base {
    public:
        void handle() { toto(); }
        virtual void toto() = 0;
};
class Child1: public Base {
    public: virtual void toto() …
Run Code Online (Sandbox Code Playgroud)

c c++ polymorphism callback

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

如何使用QWebEngineView导入本地JavaScript文件?

我正在尝试构建一个简单的示例,在 PyQt 窗口中显示 HTML(包括 JavaScript 代码)

python
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl,QDir
from PyQt5.QtWebEngineWidgets import QWebEngineView

class Example(QWidget):

    def __init__(self):
        super().__init__()
        vbox = QVBoxLayout(self)
        self.webEngineView = QWebEngineView()

        self.webEngineView.setHtml("""
            <!DOCTYPE html>
            <html lang="en">
              <head>
                <meta charset="utf-8">
                <script src="file:///home/path/to/jquery-3.6.0.min.js"></script>
              </head>
              <body>
                <!-- page content -->
                <span id="aaa">toto</span>
                <script>
                    $("#aaa").hide()
                </script>
              </body>
            </html>""")

        vbox.addWidget(self.webEngineView)
        self.setLayout(vbox)
        self.show()

sys.argv.append("--disable-web-security")
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

但显然,位于我的 Python 脚本旁边的 jQuery JavaScript …

python pyqt pyqt5 qtwebengine qwebengineview

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