我有一个返回自定义类结构的函数,但是如何处理我希望通知用户函数失败的情况,如返回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()).但我是否以过于复杂的方式思考这个问题?
我不能让#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)
......没有其他任何东西得到满足.
我无法理解这个问题。还没有机会在另一台电脑上尝试这个。
我有一个非常简单的以下代码,用于打开 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) 我有一个处理消息的函数,我在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) 我正在学习理解类构造函数和析构函数.我编写了一个小的控制台代码,用于将一个类实例添加到向量中.一切都很好,花花公子,但我无法理解的是,在向量中添加一个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) 我正在研究使用 Javascript 的浏览器 DOM 并构建一个依赖于毫米单位而不是 px 的“系统”。我知道如何以毫米为单位设置元素大小,这与
element.style.width = "32mm"; for example.
Run Code Online (Sandbox Code Playgroud)
但是,我无法以 px 以外的任何其他单位检索测量值。有没有办法做到这一点?
旁注:有没有办法为 css 定义全局默认单位系统?定义一次要使用的单位会很方便,然后只对元素使用普通值。
这很有趣,因为我之前有完全相同的设置,但我必须将主板和处理器发送给保证更换。之后我的声音就消失了。特别是尝试让耳机输出正常工作。我的预感是 NVIDIA 的 HDMI 与该问题有关,但我还无法确定问题所在。我使用默认的 DVI 电缆。
我已经重新安装了 Arch Linux 几次,但问题仍然存在。
我已经检查了以下内容:
peaker-test -c2 <- 由于某种原因播放和工作。这是唯一有效的方法。
aplay test-wav-file.wav <- 播放但听不到任何声音。
alsamixer(未静音、拨弄、一切
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)