小编Mik*_*nen的帖子

具有自定义返回类型和"错误"返回条件的函数?

我有一个返回自定义类结构的函数,但是如何处理我希望通知用户函数失败的情况,如返回false.

我的函数看起来像这样:

Cell CSV::Find(std::string segment) {
  Cell result;
  // Search code here.
  return result;
}
Run Code Online (Sandbox Code Playgroud)

因此,当成功时,它会返回正确的结果,但是当它失败时我该如何处理?

我想在Cell中添加一个布尔方法来检查什么Cell.data是空的(Cell.IsEmpty()).但我是否以过于复杂的方式思考这个问题?

c++

20
推荐指数
2
解决办法
2024
查看次数

#ifdef _WIN32未被检测到

我不能让#ifdef规则至少在Windows(64位)上工作.编译器版本是g ++ 5.4.0我试过:

#ifdef _WIN32
#ifdef _WIN64
#ifdef OS_WINDOWS
Run Code Online (Sandbox Code Playgroud)

我用以下代码编译了以下测试:g ++ main.cpp

即使使用简单的代码:

#include <iostream>

int main()
{
  std::cout << "you are on...";

  #ifdef _WIN32
  std::cout << "Windows" << std::endl;
  #elif __linux__
  std::cout << "Linux" << std::endl;
  #endif

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

输出是:

"you are on..."
Run Code Online (Sandbox Code Playgroud)

......没有其他任何东西得到满足.

c++ c++11

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

SDL2 窗口打开并保持无响应

我无法理解这个问题。还没有机会在另一台电脑上尝试这个。

我有一个非常简单的以下代码,用于打开 SDL 窗口并进入循环。它打开了窗口,我可以看到循环做了一些事情,例如,我使用增量值对 SDL_SetWindowtitle() 进行了测试,并看到它不断增长,因此有一些生命。

然而它仍然卡住,没有反应。我无法按关闭按钮或移动窗口。有时它的生命力很弱,它会“更新”,但又会再次变得无响应。

我开始认为我的代码中存在一些我没有注意到的愚蠢错误。

代码编译一切正常,警告或错误为零。
我在 Windows 10 64 位上使用 MinGW 64 位编译器。

#include <SDL2/SDL.h>
int main(int argc, char** argv) {

  SDL_Window *window;
  SDL_Surface *surface;
  SDL_Renderer *renderer;
  SDL_Event event;

  int WINDOW_WIDTH = 1280;
  int WINDOW_HEIGHT = 720;
  bool exit = 1;

  if (SDL_Init( SDL_INIT_VIDEO ) < 0) {
    return 2;
  }

  window = SDL_CreateWindow("Gui test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN );
  if (!window) {
    return 3;
  }

  surface = SDL_GetWindowSurface(window);
  if (!surface) {
    return 4;
  } …
Run Code Online (Sandbox Code Playgroud)

c++ sdl sdl-2

5
推荐指数
0
解决办法
1524
查看次数

Win32并在WindowProcedure之外捕获WM_SIZE消息

我有一个处理消息的函数,我在WindowProcedure之外捕获某些消息来触发想要的行为.

问题是虽然看起来其他消息似乎正在按需工作,但WM_SIZE由于某些原因我无法捕捉到消息. WM_SIZE在WindowProcedure中可以看到,但我找不到我的函数没有看到它的原因.我读取当前的方法有问题HWND吗?

目前的功能是:

// OS MESSAGES
int OSMessages(void)
{
  MSG msg;
  HWND actwnd = GetActiveWindow();

  if ( PeekMessage(&msg, actwnd, 0, 0, PM_REMOVE) )
  {

    if (msg.message == WM_QUIT)
    {
      printf("QUIT");
      return -1;
    }
    else if (msg.message == WM_SIZE)
    {
      printf("RESIZE");
      return 1;
    }

    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }

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

c++ winapi

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

Vector和push_back()行为

我正在学习理解类构造函数和析构函数.我编写了一个小的控制台代码,用于将一个类实例添加到向量中.一切都很好,花花公子,但我无法理解的是,在向量中添加一个Object会触发析构函数两次.为什么会这样?

如果我不添加任何对象,向量本身不会触发构造函数或析构函数,那么为什么它会发生两次呢?

谁能解释为什么会这样?

#include <cstdio>
#include <vector>
class Test
{
    private:
        int value;

    public:
        Test()
        {
            printf("\nClass constructor triggered.");
        };
        ~Test()
        {
            printf("\nClass desctructor triggered.");
        }
};

int main()
{
    std::vector<Test> container;

    container.push_back( Test() );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

更新:我向类中添加了一些更多的信息,以便我获得更具体的输出,但是现在我注意到,每次添加到向量时,移动构造和析构函数调用都会增加.这些调用的数量是否与向量中的对象数量相关或发生了什么?我有泄漏吗?对不起,如果太愚蠢的问题.以下是添加的代码:

#include <cstdio>
#include <vector>

class Test
{
    private:
        int value;

    public:
        // Constructor
        Test(int v=0)
        {
            value = v;
            printf("\n\n%i", value);
            printf("\nClass constructor triggered.");
        };

        // Copy-move constructor
        Test(Test&&)
        {
            printf("\nClass move-constructor triggered.");
        };

        // Destructor
        ~Test() 
        {
            value = 0; …
Run Code Online (Sandbox Code Playgroud)

c++

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

以毫米(或非像素单位)检索元素大小?

我正在研究使用 Javascript 的浏览器 DOM 并构建一个依赖于毫米单位而不是 px 的“系统”。我知道如何以毫米为单位设置元素大小,这与

element.style.width = "32mm"; for example.
Run Code Online (Sandbox Code Playgroud)

但是,我无法以 px 以外的任何其他单位检索测量值。有没有办法做到这一点?

旁注:有没有办法为 css 定义全局默认单位系统?定义一次要使用的单位会很方便,然后只对元素使用普通值。

html javascript css

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

音频在 Arch Linux 中无法工作,我的声音消失了

这很有趣,因为我之前有完全相同的设置,但我必须将主板和处理器发送给保证更换。之后我的声音就消失了。特别是尝试让耳机输出正常工作。我的预感是 NVIDIA 的 HDMI 与该问题有关,但我还无法确定问题所在。我使用默认的 DVI 电缆。

我已经重新安装了 Arch Linux 几次,但问题仍然存在。

我已经检查了以下内容:

  • peaker-test -c2 <- 由于某种原因播放和工作。这是唯一有效的方法。

  • aplay test-wav-file.wav <- 播放但听不到任何声音。

  • alsamixer(未静音、拨弄、一切

  • asoundconf set-default-card SB(主板芯片)。

lspci output:  
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia   (Intel HDA) (rev 40)  
01:00.1 Audio device: NVIDIA Corporation GP106 High Definition Audio Controller   (rev a1)  



aplay -l output:  
**** List of PLAYBACK Hardware Devices ****  

card 0: SB [HDA ATI SB], device 0: ALC887-VD Analog [ALC887-VD Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0 …
Run Code Online (Sandbox Code Playgroud)

linux archlinux

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

标签 统计

c++ ×5

archlinux ×1

c++11 ×1

css ×1

html ×1

javascript ×1

linux ×1

sdl ×1

sdl-2 ×1

winapi ×1