小编edA*_*a-y的帖子

转发没有类声明的shared_ptr

注意:我发现错误的来源实际上与shared_ptr无关,只是在错误消息中巧妙地伪装.因此,下面基本上是无稽之谈(不是答案,他们很好)

-

我在使用shared_ptr(目前的提升)时遇到了一些麻烦,我需要简单地将指针转发给另一个函数.使用本机指针,介入函数不需要访问类的定义,但是使用smart_ptr它就可以了.有什么方法可以避免这种情况吗?

例如,给定目标函数:

void func( shared_ptr<SomeClass> const & obj )
Run Code Online (Sandbox Code Playgroud)

const &负责的问题的一部分,而是说我们有一个getter类获得对象为其他类,如:

shared_ptr<SomeClass> someClassInstance();
Run Code Online (Sandbox Code Playgroud)

这里是我想简单地组装参数并转发到目标函数的地方:

func( someClassInstance() );
Run Code Online (Sandbox Code Playgroud)

使用普通指针,代码中的这一点可以简单地使用前向声明SomeClass,但是smart_ptr需要具有完整定义(可能是因为smart_ptr可能需要删除该类).

现在,如果someClassInstance要返回const &这个问题实际上会消失,因为介入的代码不会复制任何对象.但是,出于线程安全原因,getter函数必须返回副本.

无论如何我可以实现这种类型的智能指针参数转发而不需要类定义吗?也就是说,我可以像在这种情况下使用传统指针一样使用智能指针.

-

更新:写一个小测试答案是正确的,前向声明就足够了.然而海湾合作委员会仍然在一种情况下抱怨.我将不得不弄清楚导致它失败的原因(在这种特殊情况下).

我现在暂时关闭这个问题,或者什么?

c++ boost c++11

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

Qt同步障碍?

Qt是否等同于同步障碍?要wait阻止的第一个N-1呼叫者和第N个呼叫者要wait使其全部释放的类型.

c++ qt

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

从没有临时实例的成员指针偏移

我希望获得标准布局成员变量的偏移量,当为该变量提供一个poiner时.offsetof因为我有一个指针而不是一个名字,所以我无法使用.我当前的代码看起来像这样,我想知道是否有符合标准的方法来摆脱dummy变量.

template<class T>
struct {
  ptrdiff_t get_offset( int (T::*mem) )
  {
    T dummy;
    return reinterpret_cast<char*>(&(dummy.*mem)) 
      - reinterpret_cast<char*>(&dummy);
  }
};
Run Code Online (Sandbox Code Playgroud)

此函数只能使用int成员变量点进行调用(这是有意的).

我很确定编译器实际上并没有创建dummy变量,但如果我能摆脱它,它仍然很好.我不能使用空指针,因为未定义解除引用null(尽管它可能适用于所有常见的编译器).C++ 03解决方案会很好,或者C++ 11解决方案也很有用(但现在我无法使用).

注意:我已经知道这只是标准兼容T是标准布局类型.

c++

11
推荐指数
2
解决办法
1284
查看次数

AngularJS应用程序在锚标记中链接/路由与HTML5模式

如何链接到锚A标记中的其他AngularJS应用程序位置?我正在使用HTML5无散列模式,并希望避免让页面实际重新加载.

例如,在非HTML5模式下,我会这样做:

<a href='#/path'>Link</a>
Run Code Online (Sandbox Code Playgroud)

在HTML5模式下,我可以这样做:

<a href='/path'>Link</a>
Run Code Online (Sandbox Code Playgroud)

但这实际上会导致浏览器重新加载新的URL.我也试过使用ng-href/#/path语法,但它们似乎都没有像我想的那样工作.

如何从锚标签正确链接?

angularjs

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

获取模板类型的基类型(删除const/reference/etc.)

是否有类型特征模板,它返回给定类型的基本类型.通过碱型我的意思是与所有值调节剂,const的,易失性类型等剥离.例如,使用假设特征函数:

base<int>::type == int
base<int const>::type == int
base<int&>::type == int
Run Code Online (Sandbox Code Playgroud)

我知道remove_const并且remove_reference目前正在组合使用它们.我想知道是否存在这样的特征,或许是否有一个正确的名称我所指的是什么?

c++ templates c++11

11
推荐指数
2
解决办法
4751
查看次数

禁止特定的函数模板实例化

我想定义一个模板函数,但不允许使用特定类型进行实例化.请注意,通常允许所有类型并且通用模板有效,我只想禁止使用一些特定类型.

例如,在下面的代码中,我希望阻止使用double模板.这实际上并不会阻止实例化,但只是因为没有定义函数而导致链接器错误.

template<typename T>
T convert( char const * in )
{ return T(); }

//this way creates a linker error
template<>
double convert<double>( char const * in );

int main()
{
    char const * str = "1234";

    int a = convert<int>( str );
    double b = convert<double>( str );
}
Run Code Online (Sandbox Code Playgroud)

代码只是一个演示,显然转换函数必须做更多的事情.

问题:在上面的代码中,如何在尝试使用convert<double>实例化时产生编译器错误?


我能找到的最接近的相关问题是如何在模板实例化时故意造成编译时错误它处理的是类,而不是函数.

我需要这样做的原因是因为我希望阻止的类型实际上会编译并使用通用版本执行某些操作.但是,这不应该是函数合同的一部分,并且可能不会在所有平台/编译器和未来版本中受支持.因此,我想完全避免使用它.

c++

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

为Flask测试中的所有请求设置HTTP标头

我正在使用Flask并且拥有需要授权的端点(有时还需要其他特定于应用程序的标头).在我的测试中使用该test_client函数创建一个客户端,然后执行各种get,put,delete调用.所有这些调用都需要授权,并且要添加其他标头.如何设置测试客户端以将这些标头放在所有请求上?

python flask

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

如何通过chai断言获取mocha来报告文件/行号?

我使用的是mochachai.assert我的测试.捕获并报告错误,但它们不会显示文件/行号.我习惯用其他语言的测试来获取位置信息,否则很难弄清楚哪个断言失败了.

有没有办法用mocha/chai/assert获取位置信息?

mocha.js chai

10
推荐指数
2
解决办法
4049
查看次数

检测烧瓶是否通过gunicorn运行?

有没有办法可以检查我的烧瓶应用程序是否正在运行一个gunicorn容器?目前我设置了一个环境变量来告诉我的应用程序,但我更喜欢它是自动的.另外,有没有我可以检查正在使用的工人类?


我需要从几个不同的原因检测到这一点.请注意,通常我使用gunicorn,但在测试期间我有时不会.

  1. 记录:我在gunicorn中运行时附加到gunicorn信息日志,否则附加到stdout日志.
  2. Eventlet/subprocess:由于我使用子进程,我需要确保在使用eventlet时完成正确的monkey_patch',否则它的行为不正确.(我称之为许多子过程).

python flask gunicorn

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

Python请求,如何限制接收大小,传输速率和/或总时间?

我的服务器执行外部请求,我想限制失败请求可以造成的损害.我想在这些情况下取消请求:

  • 请求的总时间超过一定限度(即使数据仍然到达)
  • 总收到的大小超过了一些限制(我需要在接受更多数据之前取消)
  • 传输速度下降到某个水平以下(如果可以提供总时间限制,我可以没有这个)

注意我不是timeout在请求中查找参数,因为这只是不活动的超时.我无法找到与总超时或限制总大小的方法有关的任何事情.一个示例显示了maxsize参数,HTTPAdapter但未记录.

我怎样才能使用这些要求requests

python python-requests

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

标签 统计

c++ ×5

python ×3

c++11 ×2

flask ×2

angularjs ×1

boost ×1

chai ×1

gunicorn ×1

mocha.js ×1

python-requests ×1

qt ×1

templates ×1