小编Adr*_*ire的帖子

HTTP 内容类型标头中的字符集组件是必需的吗?

一个HTTP请求可能有这样的Content-Type标题:

GET / HTTP/1.1
...
Content-Type: text/xml; charset=utf-8
...
Run Code Online (Sandbox Code Playgroud)

是否存在该charset组件是强制性的情况?万一,什么时候?

可能的Content-Type标题示例,不一定正确:

Content-Type: text/xml
Content-Type: charset=utf-8
Content-Type: text/xml; charset=utf8
Content-Type:
Run Code Online (Sandbox Code Playgroud)

标准信息:

编辑注意:似乎这个参考已经过时了,RFC 7231 现在是正确的版本,正如@RobbyCornelissen 所建议的那样。

标准对此说得很少(或者我可能看错了地方):https : //www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

14.17 内容类型

Content-Type entity-header 字段指示发送给接收者的实体主体的媒体类型,或者在 HEAD 方法的情况下,如果请求是 GET,则将发送的媒体类型。

   Content-Type   = "Content-Type" ":" media-type
Run Code Online (Sandbox Code Playgroud)

媒体类型在第 3.7 节中定义。该领域的一个例子是

   Content-Type: text/html; charset=ISO-8859-4
Run Code Online (Sandbox Code Playgroud)

第 7.2.1 节提供了对识别实体媒体类型方法的进一步讨论。

http http-headers

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

如何为`std :: variant`的任何子级访问`polymorphic`基类?

假设一个基类有几个子类:

class Base 
{
public:
    void printHello() const { cout << "Hello" << endl; }
};

class Child1: public Base {};
class Child2: public Base {};
class Child3: public Base {};
..
class ChildN: public Base {};
Run Code Online (Sandbox Code Playgroud)

假设包含任何包含的类的变体:

using MyVariant = std::variant<Base, Child1, Child2, Child3, ... ChildN>;
Run Code Online (Sandbox Code Playgroud)

注意:与多态指针的简单向量相比,此方法的目的是将所有数据都存储在同一内存阵列中,因为它们将被传输到设备中。在这种情况下,每个对象的真实内容都在矢量中,而不仅仅是指向某个heap位置的指针 。

最后,假设我要使用Basea的每个元素的多态版本vector<MyVariant>

std::vector<MyVariant> myVariantList;
... // Initialization

for (const MyVariant& elem: myVariantList)
{
    const Base* baseElem = get_if_polymorph<Base>(elem); //HOW TO?
    baseElem->printHello();
}
Run Code Online (Sandbox Code Playgroud)

注意:显然,不是 …

c++ polymorphism inheritance variant c++17

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

如何 stop() 主线程 NSApp run() 事件循环?(嵌入在 C++ 中)

这是一个最小的可重现示例,如果太长而无法阅读,请转到包含问题的下一部分,然后根据需要探索代码。

最小的例子:

假设一个简单的 C++ 命令行:

主程序

#include <iostream>
#include "Wrapper.h"
int main()
{
    Wrapper wrapper;
    wrapper.run();
    std::cout << "Exiting" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

Objective-C 包装器头文件:Wrapper.h

struct OCWrapper;
class Wrapper
{
public:
    Wrapper() noexcept;
    virtual ~Wrapper() noexcept;
    void run();
private:
    OCWrapper* impl=nullptr;
};
Run Code Online (Sandbox Code Playgroud)

及其实现:Wrapper.mm

#import "Wrapper.h"
#import "MyOCApp.h"

struct OCWrapper
{
    MyOCApp* wrapped=nullptr;
};

Wrapper::Wrapper() noexcept: impl(new OCWrapper)
{
    impl->wrapped = [[ MyOCApp alloc] init];
}

Wrapper::~Wrapper() noexcept
{
    [impl->wrapped release];
    delete impl;
}

void Wrapper::run()
{
    [impl->wrapped run];
}
Run Code Online (Sandbox Code Playgroud)

最后是 Objective-C …

objective-c++ nsapplication

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

如何在 QtCreator 中使用 CMAKE 列出自定义文件?

使用CMAKE管理项目时QtCreator,一些有用的文件不会显示在项目浏览器中(例如 xml 文件、.ui 文件等)。

有没有办法使用 显式添加自定义文件以在项目中列出CMAKE

#*************************************************************************
# Indicate a related file for the project, only for convenient showing in
# project, does not mean dependency, inclusion, but just related.
function ("IndicateExternalFile" NAME )
    # TODO: No idea how to make this.

endfunction()
Run Code Online (Sandbox Code Playgroud)

到目前为止尝试:

file( GLOB "test.xml") #Not showing.
Run Code Online (Sandbox Code Playgroud)

cmake qt-creator

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

如何确定自定义TComponent所在的DFM路径?

在自定义中,我需要获取使用 的或文件TComponent的路径。显然,这仅在设计时需要。*.dfm*.pasTComponent

语境

与上一个问题类似:
How to detector the dfm/project path from a custom control while in the Designer?

我创建了一个类似于 TImageCollection 的自定义 TControl,但具有所有应用程序的共享图像数据库。为此,控件读取一个项目元文件,该文件是一个 XML,其中包含要包含在图像集合中的图像列表。在设计器中,图像是直接从图像文件中读取的,但在运行时,图像位于编译期间生成的资源(*.res)文件中。

if csDesigning in Self.ComponentState then
  loadImagesFromFiles(...)
else
  loadImagesFromResource(...)
Run Code Online (Sandbox Code Playgroud)

在以前的版本中(对于上面链接的其他问题),我尝试获取项目的路径,虽然这似乎不可能,但我找到了一种获取活动项目路径的方法。然而,当 IDE 打开多个项目时,这就很成问题了。

我决定改用另一种方法,即使用相对于使用组件的 DFM 的路径。这个应该比较靠谱。

TComponent不幸的是,对于放置在 DFM 上的自定义程序来说,了解 DFM 的位置似乎并不容易。

解决方案(一半)

我尝试了几种解决方案IOTA,但还没有任何效果。

此处提供的方法将路径返回到自身TComponent,而不是返回到使用它的 DFM。

我设法遵循相同的策略迭代模块,但找到哪个模块包含给定的模块TComponent并不简单:

function GetCurrentDfmPath(AComponent: TComponent): String;
var
  ModuleServices: IOTAModuleServices;
  Module: IOTAModule;
  idx: integer;
begin
  Result := '';
  SourceEditor := nil;

  if SysUtils.Supports(BorlandIDEServices, …
Run Code Online (Sandbox Code Playgroud)

delphi designer tcustomcontrol

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

如何在开关盒中正确返回?

假设以下示例:

int main()
{
    int value=1;
    switch( value )
    {
        case 1:
        {
            return 0;
        } break;
        default:
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

switch案例中返回不是结构化编程,但大多数开发人员认为提前退出是可接受的偏差(维基参考

大多数现代编译器都会抱怨这段代码,因为:

9: 'break' 永远不会被执行

然而,删除这break句话会引发这样一个问题:“这是一个失败吗?如果是,为什么[[fallthrough]]没有指定属性?”

显而易见的解决方案是一个假设的[[no_fallthrough]],但我在那个方向没有发现任何东西。

我的问题是:

在这种情况下,适当的方法是什么?

  • 应该switch避免返回内部吗?
  • 应该break一直用警告吗?
  • 应该break删除并注释指示//[[no_fallthrough]]?
  • 应该break删除并且开发人员注意到该return语句与 不兼容break,并且交叉手指没有重构会破坏这一点。

c++

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

在JavaScript中检索事件回调中的对象的最佳方法是什么

通常我在JavaScript中使用对象来保存数据,但事件侦听器不允许辅助指针来检索这些对象.

在事件回调中检索对象指针的最佳方法是什么?(请不要第三方图书馆)

例:

function MyClass()
{
    this.number = Math.random();
    this.button = document.createElement('div');
    this.button.appendChild(document.createTextNode('Show number'));
    document.body.appendChild(this.button);
    // THIS FOLLOWING LINE REQUIRE CHANGES
    this.button.addEventListener('click', MyClass.prototype.listener);

}
MyClass.prototype.listener = function (e)
{
    // HERE, "THIS" DO NOT POINT TO MY OBJECT
    alert( this.number );
}
testMyClass1 = new MyClass();
testMyClass2 = new MyClass();
Run Code Online (Sandbox Code Playgroud)

目前,我使用静态数组来保存指针,但这很难维护:

//New constructor, first try    
function MyClass()
{
    this.number = Math.random();
    this.button = document.createElement('div');
    this.button.appendChild(document.createTextNode('Show number'));
    document.body.appendChild(this.button);
    if (undefined===MyClass.prototype.register) MyClass.prototype.register = [];
    this.id = MyClass.prototype.register.length;
    MyClass.prototype.register.push(this);
    this.callback = new Function( …
Run Code Online (Sandbox Code Playgroud)

javascript oop javascript-events

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

C++函数,它接受一个成员函数并返回一个静态lambda/std :: function

我想实现一个成员函数,该函数获取指向其他成员函数的指针并返回静态绑定.可能是什么:a lambda或a? std::function.

从那时起,我在C++ 11中做了以下意图但没有成功:

#include <functional>
#include <iostream>

class MyClass{
public:
    auto link( std::function<void(MyClass::*)(int)> func)->std::function<void(int)>
    {
        return [this, func](int i){func(i);};
    }
    auto myFunc(int i)->void { std::cout << "Ok:" << i << std::endl; }

    auto test ()->void
    {
        link(&MyClass::myFunc)(4);
    }
};

auto main()->int
{
    MyClass c;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ lambda member c++11

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

为什么unordered_multimap没有lower_bound和upper_bound?

从多图切换到unordered_multimap时,我意识到没有等效图:

  • lower_bound
  • upper_bound

显然equal_range可以很容易地做到这一点,但是我想知道是否遗漏了一些东西:做出这种选择的原因。

来自任何其他库,我都认为差异是一个简单的错误,但是STL在这方面通常是正交的。

c++ stl

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

Delphi中如何调用当前级别的虚方法?

假设有两个类:

Parent = class
public
  procedure virtFunc(); virtual;
  procedure other();
end;

Child = class(Parent)
public
  procedure virtFunc(); override;
end;
Run Code Online (Sandbox Code Playgroud)

通常,从任何地方调用virtFunc实例Child都会调用Child该方法的实现。但是,有时调用相同级别的实现很有用:

procedure Parent.other();
begin
  virtFunc(); // I want to call Parent.virtFunc(), not Child.virtFunc()
end;
Run Code Online (Sandbox Code Playgroud)

我尝试了什么?

Parent(Self).virtFunc()

(Self as Parent).virtFunc()

显然,我可以(但这不是问题):

  • 以不同的方式重命名它们(childFunc 与 ParentFunc),
  • 去除virtual

如何在Delphi中调用方法的当前级别(非多态)版本?

对于那些了解 c++ 的人,我想要一些相当于Parent::virtFunc()

delphi

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

如何将“对过程的引用”从 Delphi 翻译为 Lazarus?

免责声明:我要求“拉撒路”,因为我并不真正关心mode Delphimode ObjFPC......

我正在将一些代码从“Delphi 11”翻译到 Lazarus 并发现了这些:

TProc = reference to procedure(const AControl: TControl);
....
proc := MyProcedure;
Run Code Online (Sandbox Code Playgroud)

如果我是正确的,这似乎是对事件回调方法的一些托管引用。

我如何在 Lazarus 下做出等价的东西?

delphi freepascal lazarus

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