小编Tee*_*eej的帖子

当我有 2 个显示器时,SDL_GetNumVideoDisplays() 返回 1

晚上好。

我正在远程计算机上设置我的游戏项目,但遇到了 SDL 问题。我正在使用 SDL 2.0,并且试图找出为什么当我的 PC 连接了 2 个显示器时 SDL_GetNumVideoDisplays() 返回 1。我运行的是 Ubuntu 14.04 LTS,两台显示器似乎都已正确配置,只需正常使用桌面即可。

希望能提供有关在何处解决此问题的提示。谢谢。


更新 1 - ./configureSDL2-2.0.4 源代码

在配置脚本中寻找有关 X11 的内容并看到以下内容:

checking for X11/extensions/Xext.h... yes
-- dynamic libX11 -> libX11.so.6
-- dynamic libX11ext -> libXext.so.6
checking for const parameter to XextAddDisplay... yes
checking for XGenericEvent... yes
checking for XkbKeycodeToKeysym in -lX11... yes
checking for X11/Xcursor/Xcursor.h... no
checking for X11/extensions/Xdbe.h... yes
checking for X11/extensions/Xinerama.h... no
checking for X11/extensions/XInput2.h... no
checking for X11/extensions/scrnsaver.h... no
checking for …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu multiple-monitors sdl-2

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

":: value"在哪里获得价值?

我一直在阅读有关SFINAE的内容,并查看以下某些变体的一些示例:

#include <iostream>
#include <type_traits>

template <typename... Ts> using void_t = void;

template <typename T, typename = void>
struct has_typedef_foobar : std::false_type {};

template <typename T>
struct has_typedef_foobar<T, void_t<typename T::foobar>> : std::true_type {};

struct foo {
  using foobar = float;
};

int main() {
  std::cout << std::boolalpha;
  std::cout << has_typedef_foobar<int>::value << std::endl;
  std::cout << has_typedef_foobar<foo>::value << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

(摘自https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error)

我很困惑value会员来自哪里.has_typedef_foobar的两个定义似乎都没有指定名为value的布尔成员.

哪里::value有价值?我怀疑它是某种编译器提供的值,并且想要阅读它,但我不确定谷歌的术语,因为我的查询带来了其他与C++ 11相关的价值相关主题.

谢谢.

c++ templates type-traits c++11

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

c ++通过共享指针为struct成员赋值导致SIGSEGV

再会。自 90 年代末以来我没有使用 C++ 知识后,我正在更新我的 C++ 知识,并且正在快速了解新事物。今天,我的问题是关于共享指针和结构。

这是我的代码:

#include <memory>

struct A {
    int x;
};

int main() {
  shared_ptr<struct A> y;
  y->x =0;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译字符串:

g++ -Wall -Wpedantic --std=gnu++11 -g test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

valgrind memcheck 指出第 11 行有一个“大小为 4 的无效写入”,即 y->x = 0

所以,我的问题是:为什么会有无效写入?我的理解——显然是错误的——是 shared_ptr 惯用语将处理它所指向的东西的内存分配和解除分配,而且据我所知,当我使用它指向原始类型和类时,确实会发生这种情况,但是这种将它与结构一起使用的情况让我感到困惑。

我试图弄清楚的真正用例是使用智能指针来存储结构 sockaddr_in,但我认为我应该(重新)学习爬行,然后再学习构建指向智能指针之前定义的对象的智能指针一个被广泛接受的东西。

谢谢。

c++ struct smart-pointers

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

C++ 结构化绑定:标准的销毁顺序是什么?

是否有可以放入结构化绑定语句中的方法返回的对象的销毁顺序的定义?cppreference 似乎没有提到销毁顺序,并且对 godbolt 的快速测试揭示了一些与我预期不同的内容。

#include <iostream>
#include <tuple>

struct A{
    A()=default;
    ~A(){ std::cout << "~A()" << std::endl; }
};

struct B{
    B()=default;
    ~B(){ std::cout << "~B()" << std::endl; }

};

struct C{
    C()=default;
    ~C(){ std::cout << "~C()" << std::endl; }
};

auto MakeStuff()
{
    auto a = A{};
    auto b = B{};
    auto c = C{};
    
    return std::make_tuple(std::move(c), std::move(b), std::move(a));
}

int main()
{
    auto&& [c, b, a] = MakeStuff();
    std::cout << "Results now: " << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

结果:

Program …
Run Code Online (Sandbox Code Playgroud)

c++ c++17

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