小编dre*_*rjm的帖子

从缓冲区创建QImage,没有深层拷贝?

在Qt中,如何QImage从字节数组('uint8_t*`)构造一个对象,而不创建一个深拷贝,只是引用我的数据数组?

c++ qt

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

如何在C++中重置函数的静态变量

当您第一次尝试使用以下函数时,它会给您正确的答案,即两个数字的最小公倍数(最小公倍数)。对于使用新参数的第二次调用,静态变量不会从 1 开始,这会给我错误的答案。在执行递归循环之前是否有将其设置为 1 的方法?

int lcm(int a, int b)
{ 
    static int common = 1;

    if (common % a == 0 && common % b == 0)
        return common;

     common++;
     lcm(a, b);
     return common;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

默认和零初始化

#include <string>
 
struct T1 { int mem; };
 
struct T2
{
    int mem;
    T2() { } // "mem" is not in the initializer list
};
 
int n; // static non-class, a two-phase initialization is done:
       // 1) zero initialization initializes n to zero
       // 2) default initialization does nothing, leaving n being zero
 
int main()
{
    int n;            // non-class, the value is indeterminate
    std::string s;    // class, calls default ctor, the value is "" (empty string)
    std::string a[2]; // …
Run Code Online (Sandbox Code Playgroud)

c++

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

C++ 程序没有输出

首先,很抱歉,如果这是错误的类别,因为我不确定这个问题的原因是什么。

出于教育目的,我创建了一个小型“Hello World”应用程序

#include <iostream>
int main() {
    std::cout << "Hello World\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 Visual Studio 和 MINGW-64(g++ -m64 main.cpp) 将其编译为 64 位应用程序。它在我的 Windows 计算机上完美运行,但是当我尝试在最新的 Windows PE 中运行它时,它不会打印出任何内容。我也尝试过使用 std::cin 以便程序不会立即停止,但同样的事情发生 - 没有输出,也没有错误。 在此输入图像描述

我知道 WinPE 在包含的库和子系统方面非常有限,但我真的认为这个简单的 Hello World 应用程序可以运行。WinPE环境是64位的,这就是为什么我编译为64位

有什么想法我应该从哪里开始吗?

c++ cout winpe

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

如何使 CMakelists.txt 包含仅适用于一种操作系统的一些 *.c 和 *.h 文件?

我想包含一些仅适用于 Windows 操作系统的 *.c 和 *.h 文件。但我找不到在不创建另一个目标的情况下如何做到这一点的方法,这会导致错误

我想做这样的事情:

add_executable(${TARGET}
     main.cpp
     mainwindow.cpp
     mainwindow.h
     mainwindow.ui
if (WIN32)
     test.c
     test.h
endif()
)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做到这一点吗?

c c++ cmake cmakelists-options

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

Cmake 中的 Boost 文件系统版本错误

我正在开发一个 C++ 程序,该程序使用 cmake 和 conan 进行编译,并提升 1.7.4。最近,我开始收到:错误:#error Compiling Filesystem version 3 file with BOOST_FILESYSTEM_VERSION returned!= 3。

该程序直到最近都运行良好,现在才开始出现此错误。

这是我的cmake代码

#find external libraries with Conan
 ----------------------------------------------------------
conan_check(VERSION 1.0.0 REQUIRED)
message(STATUS "Downloading dependency libraries with Conan")

 #The boost dependency is tricky.
 #Need 1.74 for correct behavior, and need options to successfully build on mac
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
     #workaround for https://github.com/conan-io/conan-center-index/issues/4097
    set(CONAN_OPTIONS boost:without_fiber=True boost:without_nowide=True)
else()
    set(CONAN_OPTIONS )
endif()

conan_cmake_run(REQUIRES boost/1.74.0 jsoncpp/[>=1.8.4] eigen/[>=3.3.7] cgal/[>=5.1]
    OPTIONS
        ${CONAN_OPTIONS}
    BUILD missing
    CMAKE_TARGETS
    BASIC_SETUP
    UPDATE)
Run Code Online (Sandbox Code Playgroud)

我相信 boost 1.7.4 …

c++ boost cmake boost-filesystem conan

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

Cout不是std的成员,也不是c ++的其他问题

请允许我在前言中说我确实已经包含(也适用于字符串,endl,而且字面上一切都不起作用); 就语法而言,我的IDE没有显示任何错误; 我无法理解为什么会出现这个问题?它在我写的其他一些C++代码示例中工作正常.

所以我想做一个小游戏,公牛和奶牛.我的主要代码如下:

#include <iostream>

#include "stdafx.h"
#include "BullsAndCows.h"



using std::cout;
using std::endl;
using std::cin;
using std::string;

int main()
{

    string userInput = "";
    bool playAgain = false;

    int gameDiff;

    constexpr char * GREETING = "Welcome to Bulls and Cows! Please enter the difficulty level: (1) Easy, (2) Medium, (3) Hard";

    cin >> gameDiff;

    do
    {
        BullsAndCows *bc = new BullsAndCows();
        bc->playGame(gameDiff);

    } while (playAgain);


    constexpr char * INFORMATION = "Total Word Length  is: ";

    //Introduce the game.

    cout …
Run Code Online (Sandbox Code Playgroud)

c++ namespaces c++11

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

Qt Creator 4.3.1未检测到MSVC 2015编译器

未检测到Qt Creator中的编译器(我想使用MSVC 2015,因为这是此版本的Qt Creator的构建基础)。

我在Window 7盒子上安装了带有Update 3的Visual Studio Professional 2015已经有一段时间了。

我从downloads-open-source路径安装了Qt Creator,在帮助菜单中显示“基于Qt 5.9.1(MSVC 2015,32位)”。

我同时安装了“ Microsoft Visual C ++ 2015可再发行组件(x86)-14.0.24215”。

我想念什么?

c++ qt qt-creator

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

禁用最大化按钮 c++ 控制台应用程序

我正在维护运行控制台的旧 C++ 应用程序。我已禁用“关闭”按钮。我也需要禁用最大化按钮。以下代码禁用关闭按钮

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
DrawMenuBar(GetConsoleWindow());
Run Code Online (Sandbox Code Playgroud)

我添加了一行来禁用最大化按钮:

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_MAXIMIZE, MF_BYCOMMAND);
DrawMenuBar(GetConsoleWindow());
Run Code Online (Sandbox Code Playgroud)

它有效,按钮被禁用但它没有变灰。(关闭按钮变灰)我错过了什么?谢谢你。

c++ winapi visual-studio windows-7

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

在动态创建指针数组时,Visual Studio不显示完整数组

我的代码:

#include "pch.h"
#include <iostream>

using namespace std;

   int main()
   {
      char** pptr = new char*[5];

      for (int i = 0; i < 5; i++)
      pptr[i] = new char[5];
   }
Run Code Online (Sandbox Code Playgroud)

我想要发生的是,pptr现在指向一个5个指针数组的开头,每个指针都指向一个包含5个字符的数组的开头.

我在main函数的末尾加了一个断点并添加pptr到watch中,它只存储一个指针.为什么会发生这种情况,我该如何正确地做到这一点?

在此输入图像描述

c++ debugging pointers visual-studio

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