小编Mer*_*kiz的帖子

Kotlin 中 lambda 表达式中的默认参数

我想创建一个 lambda 并将其分配给一个变量,以下按预期工作:

val rollDice = { min: Int, max: Int -> (min..max).random() }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试为参数分配默认值时,出现错误:

val rollDice = { min: Int = 1, max: Int = 12 -> (min..max).random() }
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Unexpected tokens (use ';' to separate expressions on the same line)
Run Code Online (Sandbox Code Playgroud)

是否无法在 Kotlin 中为 lambda 表达式中的参数分配默认值?

lambda kotlin

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

LWJGL全屏不起作用

我正在尝试为我的程序添加全屏功能,但我无法让它工作.我尝试着

Display.setFullscreen(true);
Run Code Online (Sandbox Code Playgroud)

我尝试将其位置更改为我创建显示的位置或我设置displaymode的位置,但仍然无法正常工作.对此有何帮助?

fullscreen lwjgl

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

如何在C++中返回二维数组

我正在尝试为我之前制作的3D引擎端口实现Matrix4x4类.这是我目前在头文件中的内容:

#ifndef MAT4_H
#define MAT4_H

class Matrix4
{

public:
   Matrix4() {}
   float[4][4] getMatrix() { return m; }
   //...
   //other matrix related methods are omitted
   //...
private:
   float m[4][4]; 

};

#endif
Run Code Online (Sandbox Code Playgroud)

但是应该返回二维数组的方法会导致此错误:

src/Matrix4.h:13:10: error: expected unqualified-id before '[' token
    float[4][4] getMatrix() { return m; }
         ^
Run Code Online (Sandbox Code Playgroud)

我很抱歉,如果这个问题已经有了答案,但我在这个网站上找到的答案通常是关于返回指针而不是数组.希望你能帮忙,谢谢.

c++ arrays multidimensional-array

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

如何在Linux中居中SDL窗口?

我试图找到一种方法来创建一个以屏幕为中心的SDL窗口,我发现了这段代码

#ifdef WIN32
#include <SDL_syswm.h>
SDL_SysWMinfo i;
SDL_VERSION( &i.version );
if ( SDL_GetWMInfo ( &i) ) {
HWND hwnd = i.window;
SetWindowPos( hwnd, HWND_TOP, x, y, width, height, flags );
}
#endif // WIN32
Run Code Online (Sandbox Code Playgroud)

但它仅适用于Windows.我怎么能在Linux中这样做?

c++ linux sdl

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

单例实现 - 为什么需要复制构造函数?

我在网上找到了这个单例设计模式的代码:

class Foo
{

public:
    static Foo& getInstance()
    {
        static Foo instance;
        return instance;
    }
private:
    Foo() {};
    Foo(Foo const&);
    Foo& operator=(Foo const&);

}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么构造函数Foo(Foo const&);Foo& operator=(Foo const&);都需要.有人可以向我解释一下吗?

c++ singleton operator-overloading copy-constructor

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

OpenGL:GL_QUADS不绘制方形

我试图在屏幕上画一个正方形,但它清楚地绘制了一个矩形.

这是我的渲染代码:

glClear(GL_COLOR_BUFFER_BIT);
glTranslatef(0,0,-0.1);
glBegin(GL_QUADS);
    glVertex3f(0,0,0);
    glVertex3f(1,0,0);
    glVertex3f(1,1,0);
    glVertex3f(0,1,0);
glEnd();

SDL_GL_SwapBuffers();
Run Code Online (Sandbox Code Playgroud)

和OpenGL初始化代码:

glClearColor(0,0,0,0.6f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30,640.0/480.0,.3f,200.0);
glMatrixMode(GL_MODELVIEW);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

c++ opengl sdl glu

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

为什么std :: cout在线程中被抢占但是printf不是?

我开始学习C++ 11标准中的线程,我正在尝试一个非常基本的程序,它创建10个线程,加入它们然后退出.在线程函数中,我试图打印出我正在创建线程的for循环的索引,如下所示:

std::vector<std::thread> threads;
for(int i = 0; i < 10; i++)
{
    threads.push_back(std::thread([i](){ printf("Thread #%d\n", i); }));
}
Run Code Online (Sandbox Code Playgroud)

这会产生一个预期来自并发程序的输出,线程执行顺序:

Thread #0
Thread #2
Thread #1
Thread #3
Thread #4
Thread #5
Thread #6
Thread #7
Thread #8
Thread #9
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用std::cout和做同样的事情时std::endl,我得到了这个:

Thread #0
Thread #Thread #2
Thread #3
Thread #9
1
Thread #8
Thread #4
Thread #5
Thread #7
Thread #6
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况std::cout而不是发生printf

c++ multithreading c++11

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

C++多线程?

我决定最近在C++中制作游戏,并且我发现在C++中没有多线程支持:(有库但它们依赖于平台而且不是很好.有没有办法做这个平台 - 独立于C++?

c++ multithreading

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