小编lar*_*moa的帖子

为什么std :: for_each(from,to,function)返回函数?

我刚刚读了std :: for_each的代码:

template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f)
{
  for ( ; first!=last; ++first ) f(*first);
  return f;
}
Run Code Online (Sandbox Code Playgroud)

并且无法看到此模板函数返回输入函数的任何充分理由.有没有人有任何关于这将有用的例子?

c++ templates stl

29
推荐指数
2
解决办法
6441
查看次数

何时使用信号和插槽以及何时不使用

我们正在使用提供信号和插槽的Qt,我觉得非常方便.然而,强大的力量带来了巨大的责任,我认为很容易滥用这个功能.

是否有信号槽使用的最佳实践?我很难以这种方式找到一些通用指南.一些问题(我有明确的意见,但并非所有团队成员都同意):

  • 使用信号报告错误是否可以?
  • 可以假设信号将被处理吗?
  • 信号可用于启动行动吗?例如,signal displayInfoScreen()必须由显示信息屏幕的插槽处理.

关于何时应该/不应该使用信号的任何其他意见都是非常受欢迎的!

c++ qt signals-slots qt-signals

24
推荐指数
4
解决办法
3157
查看次数

在Windows中更改提升线程优先级

我试图改变提升中的线程优先级,但我没有运气.我从GetLastError函数得到一个错误的句柄错误(类型6).我虽然native_handle()返回了线程的句柄?

有人知道怎么做吗?

void baseThread::applyPriority(uint8 priority)
{

#ifdef WIN32
    if (!m_pThread)
        return;

    BOOL res;
    HANDLE th = m_pThread->native_handle();

    switch (priority)
    {
    case REALTIME   : res = SetPriorityClass(th, REALTIME_PRIORITY_CLASS);      break;
    case HIGH       : res = SetPriorityClass(th, HIGH_PRIORITY_CLASS);          break;
    case ABOVE_NORMAL   : res = SetPriorityClass(th, ABOVE_NORMAL_PRIORITY_CLASS);  break;
    case NORMAL     : res = SetPriorityClass(th, NORMAL_PRIORITY_CLASS);            break;
    case BELOW_NORMAL   : res = SetPriorityClass(th, BELOW_NORMAL_PRIORITY_CLASS);  break;
    case IDLE       : res = SetPriorityClass(th, IDLE_PRIORITY_CLASS);          break;
    }

    if (res == FALSE)
    {
        int err = GetLastError();
    }

#endif …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi multithreading boost

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

如果已经命中断点A,则启用断点B.

我经常发现自己在代码中的某处设置了一个断点,并在遇到这个断点时手动启用一个或多个断点.典型的情况是我在调试单元测试时并不关心前面的测试.

void testAddZeros()
{
  Number a(0);
  Number b(0);
  Number result = a.add(b);
  assert((a + b) == Number(0))
}
void testAddOnes()
{
  Number a(1);
  Number b(1);
  Number result = a.add(b);
  assert((a + b) == Number(2));
}
void testAddNegativeNumber()
{
  Number a(1);
  Number b(-1)
  Number result = a.add(b);
  assert((a + b) == Number(0));
}
Run Code Online (Sandbox Code Playgroud)

想象一下,如果testAddZeros()并且testAddOnes()运行良好,但是testAddNegativeNumber().在这种情况下,设置断点Number result = a.add(b);将是开始调试的自然场所.现在想象一下,错误位于内部深处Number::add,所以我们并没有真正对早期发生的事情感兴趣Numbers::add.我想要做的是在内部设置一个断点Numbers::add,只有当我在testAddNegativeNumber()-test 中时才触发.

在遇到断点B时有没有办法自动启用断点A

.net breakpoints visual-studio visual-studio-debugging

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

我可以阻止调试器进入Boost或STL头文件吗?

我正在使用Qt Creator和gdb在Linux平台上调试我的C++代码.每当我使用a boost::shared_ptr等时,调试器都会进入包含boost实现的头文件(即/ usr/include /boost/shared_ptr.hpp).我想在调试方面忽略这些文件,然后简单地跳过它们.我知道我可以在它到达其中一个文件时立即退出,但是如果不在每个调试会话中多次这样做,那么调试会更容易.

我正在使用gcc编译器(g++),在带有QtCreator 2.2的OpenSuSE Linux 11.2上运行(gdb用作调试器).

编辑添加:问题适用于Boost文件,但也可以应用于STL文件.

debugging gcc boost gdb qt-creator

19
推荐指数
2
解决办法
2001
查看次数

在简单的域驱动设计中的贫血域模型与域模型

我最近读了一篇关于" 贫血领域模型模式 "的文章引起了我的注意.当我读完这篇文章时,我发现Anemic Domain Model描述适用于我已经开发和构建的许多项目.我从未认为这是一个糟糕的设计决定,因为它感觉非常自然.我认为,在领域模型重量轻且不是非常复杂的情况下,贫血领域模型的名字非常适合.为什么要增加域模型的复杂性,而不必仅仅因此"Anemic Domain Model"的标题不能恰当地描述您的代码?

问题:在您的服务/应用程序层中填充更多代码复杂性的时间点变得不正确,有利于暴露实体对象的复杂性?我在一个实体上拥有一个"Total"属性,它在内部可以计算出Total的值.我不是让实体直接与各种其他小工具通信,以确定其中一个属性的结果.因此,贫血领域模型的概念是一种反模式还是一种良好的关注点分离?标题贫血领域模型总是一件坏事吗?

只是好奇其他人对这种设计(反)模式的看法.

design-patterns anti-patterns

16
推荐指数
2
解决办法
5263
查看次数

从类型中删除 undefined

typeof用来推断函数的返回类型,但由于我无法调用实际函数,因此我使用了使用三元运算符来推断类型的技巧,但是这给我留下了一个联合类型,其中包括undefined

function foo() {
  return { bar: 1 };
}

const fooInstance = true ? undefined : foo(); // foo() is never actually called
type FooOrUndefined = typeof fooInstance;     // {bar: number} | undefined 
type Foo = ???;                               // Should be { bar: number }
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱undefinedFooOrUndefined

typescript typescript-generics typescript2.0

13
推荐指数
2
解决办法
3190
查看次数

在Qt QML中指定许多Text-elements的字体

我有一个通过QML文件指定的小部件.此小部件包含一个Rectangle包含两个的顶级Columns.每个都Columns包含许多Text元素.这个QML小部件包装QDeclarativeView在C++ 的子类中.

我想为每个Text元素指定字体.今天我通过指定顶级属性来做到这一点:

property string fontfamily: "Arial"
property bool fontbold: false
property bool fontitalic: false
property int fontpixelsize: 11
property string fontcolor: "White"
Run Code Online (Sandbox Code Playgroud)

并将每个Text元素绑定到这些属性:

Text
{   
    color: fontcolor
    font.family: fontfamily
    font.bold: fontbold
    font.italic: fontitalic
    font.pixelSize: fontpixelsize
    ...
}
Run Code Online (Sandbox Code Playgroud)

这不是很优雅,每次我需要支持新的东西时都需要添加新的字段(例如带下划线的字体).我无法声明类型的属性font并绑定到此属性(小部件是空白的,qmlviewer警告"属性后的预期类型").

是否有更好的方法为所有Text元素指定字体?

注意!我正在手写QML文件.

c++ user-interface qt qml

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

为什么TextWriter.Write(char)不是抽象的?

TextWriter是一个抽象类,有一个抽象函数 - Encoding Encoding { get; }.实现也必须实现void Write(char),但这个功能不是抽象的 - 为什么?默认实现对我来说没有任何意义.

.net c#

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

编译Windows GCC和MSVC编译器之间的时间比较

我们正在努力减少Windows上的编译时间,因此正在考虑所有选项.我试图在谷歌上查看使用GCC(MinGW或Cygwin)和MSVC编译器(CL)的编译时间之间没有任何运气的比较.当然,进行比较并不难,但如果可以的话,我宁愿避免重新发明轮子.

有人知道那里的比较吗?或者也许有人有一些实践经验?

输入非常感谢:)

windows compiler-construction gcc visual-studio

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