小编Lal*_*and的帖子

在lambda中移动捕获

如何通过C++ 11 lambda中的move(也称为右值引用)捕获?

我想写这样的东西:

std::unique_ptr<int> myPointer(new int);

std::function<void(void)> example = [std::move(myPointer)]{
   *myPointer = 4;
};
Run Code Online (Sandbox Code Playgroud)

c++ lambda rvalue-reference c++11

135
推荐指数
4
解决办法
6万
查看次数

如何使用xlib正确截取屏幕截图?

我正在尝试捕获屏幕图像以用于截屏.因此我需要一个快速的解决方案,并且不能依赖shell程序,如import或xwd.

这是我到目前为止编写的代码,但是它失败并且给了我一个垃圾图像,它似乎只是显示了奇怪颜色的几个图像的片段.

http://s9.postimage.org/dqnkgkwr1/blah.png

关于我做错了什么的任何想法?

#include <X11/Xlib.h>
#include <X11/X.h>

#include <cstdio>
#include <CImg.h>
using namespace cimg_library;

int main()
{
   Display *display = XOpenDisplay(NULL);
   Window root = DefaultRootWindow(display);

   XWindowAttributes gwa;

   XGetWindowAttributes(display, root, &gwa);
   int width = gwa.width;
   int height = gwa.height;


   XImage *image = XGetImage(display,root, 0,0 , width,height,AllPlanes, ZPixmap);

   unsigned char *array = new unsigned char[width * height * 3];

   unsigned long red_mask = image->red_mask;
   unsigned long green_mask = image->green_mask;
   unsigned long blue_mask = image->blue_mask;

   for (int x = 0; x < …
Run Code Online (Sandbox Code Playgroud)

c c++ screenshot xlib cimg

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

与std :: bind相反,为函数添加伪参数

我需要与std :: bind相反的东西,它将伪参数添加到函数签名而不是boost :: bind如何绑定参数.

我有这个功能:

std::function<void (void)> myFunc;
Run Code Online (Sandbox Code Playgroud)

但是我想把它转换成一个std::function<void(int)>传递给这个函数

void processFunction( std::function<void(int)> func);
Run Code Online (Sandbox Code Playgroud)

c++ bind function

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

有什么方法可以在抽象基类中使用模板函数吗?

我正在尝试创建一个配置管理器类,它可以通过std :: string存储任意对象.

我的界面(抽象基类)的开始是这个(当然这非常不完整)

class ConfigurationManager
{
public:
   static boost::shared_ptr<ConfigurationManager> create();

   template<typename T>
   virtual T getOption(const std::string& name) = 0;
};
Run Code Online (Sandbox Code Playgroud)

但后来我的编译器指出模板不能是虚拟的(然后我意识到我无论如何也无法导出模板).

在内部我将使用boost :: any(几乎是运行时检查的void*),但我不想在我的界面中公开boost :: any.

最好的方法是什么?

c++ virtual abstract-class

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

OpenGL 3.2核心配置文件指南

有人可以建议学习OpenGL 3.2核心配置文件的指南吗?

SDK很难阅读,我见过的大部分指南都只教授旧方法.

c++ opengl opengl-3

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

与asio线程安全协同程序

有没有什么方法可以与boost :: asio一起使用线程安全的协同程序?

我想让一个人io_service在多个线程上运行,并让我的一些处理程序成为协同程序.

Boost.Coroutine似乎是一个解决方案,但他们证明他们不支持恢复在一个单独的线程中启动的协同程序.

据我所知,这个问题只有两种可能的解决方案:

  1. 不要使用协同程序.使用更冗长(甚至是lambda),但同样功能的链接回调存储状态的方法.
  2. 强制每个处理程序仅在一个线程中运行.我知道这可以通过为每个线程单独设置一个io_service来实现.顺便说一下,有一种简单的方法,类似于io_service :: strand,强制一组处理程序在同一个线程中运行吗?

两者都没有任何好的解决方案.在一个解决方案中,我失去了协同程序.在另一方面,我失去了大部分的多线程能力.

c++ coroutine boost-asio

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

使用lambda表达式时,Java 8泛型+异常编译时错误

几天前,我开始重构一些代码以使用新的Java 8 Streams库.不幸的是,我在使用一个方法执行Stream :: map时遇到了编译时错误,该方法被声明为抛出一个进一步指定为RuntimeException的泛型E.

有趣的是,当我切换到使用方法引用时,编译时错误就消失了.

这是一个错误,还是我的方法引用不等同于我的lambda表达式?

(另外,我知道我可以用Parameter :: execute替换p-> p.execute(foo).我的实际代码有execute方法的附加参数).


错误信息

Error:(32, 43) java: unreported exception E; must be caught or declared to be thrown
Run Code Online (Sandbox Code Playgroud)

import java.util.ArrayList;
import java.util.List;


public class JavaBugTest
{
    interface AbleToThrowException<E extends Exception>
    {
    }

    interface Parameter {
        public <E extends Exception> Object execute(AbleToThrowException<E> algo) throws E;
    }

    interface ThrowsRuntimeException extends AbleToThrowException<RuntimeException>
    {
    }

    static ThrowsRuntimeException foo;


    public static Object manualLambda(Parameter p)
    {
        return p.execute(foo);
    }

    public static void main(String[] args)
    {
        List<Parameter> params …
Run Code Online (Sandbox Code Playgroud)

java generics lambda java-8

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

GtkLookAndFeel在Oracle Jre上致命崩溃

每当我检查是否支持GtkLookAndFeel时,我遇到了JRE崩溃的问题.令人惊讶的是,这个错误似乎只出现在Oracle JRE上.

到目前为止,我已经测试了三个JRE的行为:

(我正在使用所有这些的64位版本)

  • OpenJDK运行时环境(IcedTea 2.5.1)(7u65-2.5.1-4) - >运行正常
  • Java(TM)SE运行时环境(版本1.7.0_67-b01) - >崩溃
  • Java(TM)SE运行时环境(版本1.8.0_20-b26) - >崩溃

以下是触发此错误的代码:

import javax.swing.LookAndFeel;
public class Test
{
    public static void main(String[] args)
    {
      LookAndFeel currLAF = new com.sun.java.swing.plaf.gtk.GTKLookAndFeel();
      currLAF.isSupportedLookAndFeel();
      System.out.println("I am exiting main");
    } 
}
Run Code Online (Sandbox Code Playgroud)

以下是结果输出:

I am exiting main
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f91fe0fdbe0, pid=332, tid=140265730119424
#
# JRE version: Java(TM) SE Runtime Environment (7.0_67-b01) (build 1.7.0_67-b01)
# Java VM: Java …
Run Code Online (Sandbox Code Playgroud)

java gtk swing look-and-feel fatal-error

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

使用Curl或其他方法检索完全呈现的页面?

有没有办法从javascript后期渲染的页面中检索完全渲染的html?如果我使用curl,它只是检索基本的html,但缺少iframe的后期呈现,javascript处理等.

实现这一目标的最佳方法是什么?

javascript php curl

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

在成员函数返回之前删除对象是不确定的行为?

可能重复:
C++:删除这个?

我正在尝试创建一个管理游戏状态的系统.

我当前设计的问题是,当我切换状态时,在控制切换到新状态之前删除旧状态.

以下是我的代码的简化版本:

class StateManager;

class State
{
public:
    virtual void update(StateManager &manager)= 0;
    virtual ~State(){}
};


class StateManager
{
public:
    void setState(std::unique_ptr<State> && newState )
    {
        currentState = std::move(newState);
    }
    std::unique_ptr<State> currentState;

    void run()
    {
        currentState->update(*this);
    }
};
Run Code Online (Sandbox Code Playgroud)

请注意,如果State对象在update方法中调用StateManager :: setState,则会有一段时间在刚刚销毁的对象上调用成员函数.

有关此行为的完整示例,请访问http://ideone.com/WHLzJL.注意在FirstState :: update返回之前如何调用FirstState的析构函数.

这是C++中未定义的行为吗?如果是这样,我应该如何改变我的设计?

c++

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