小编The*_*ind的帖子

可变参数列表是否以空值结尾?

标题几乎完全涵盖了我的问题。对于某些上下文 - 从各种来源我知道可变参数函数应该有签名,其中第一个参数提供有关传递了多少参数的信息,但是在玩弄它之后我发现它vs_arg总是nullptr在最后一个参数之后立即返回所以这段代码效果很好(使用 MS Visual Studio):

void func(MClass *t_instance...) {
    std::va_list arguments;
    va_start(arguments, t_instance);
    for (MClass *instance = t_instance; instance != nullptr; instance = va_arg(arguments, MClass *)) {
        std::out << instance->name << std::endl;
    }
    va_end(arguments);
}
Run Code Online (Sandbox Code Playgroud)

当然,如果没有nullptr作为参数传递,这是一个有效的假设吗?我找不到这个列表应该是空终止的,但也找不到相反的。

c++ variadic-functions

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

Swizzling +[NSObject初始化]方法来记录每个类实例化

基本上,我想在每次实例化类对象时进行打印。下面的代码显示了意图。

@interface NSObject (ILogger)
+ (void)initialize;
@end

@implementation NSObject (ILogger)
+ (void)initialize
{
    NSLog(@"Initializing %s", class_getName([self class]));
}
@end
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为NSObject已经有一个+initialize方法,所以这种方法会导致未定义的行为。编译器还警告该问题:warning: category is implementing a method which will also be implemented by its primary class

一种想法是以某种方式混合+[NSObject initialize]并进行日志记录。我该如何安全地做到这一点?

编辑:

也许我使用了错误的术语,但目标是了解应用程序中是否使用了某个类。如果创建了多个类的对象,则不需要每次都记录,一次就足够了。

objective-c swizzling ios

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

使用 OpenGL 更改背景颜色

Qt OpenGL 窗口示例显示了一个彩色三角形。颜色、RGB 角设置为:

static const GLfloat colors[] = {
    1.0f, 0.0f, 0.0f,
    0.0f, 1.0f, 0.0f,
    0.0f, 0.0f, 1.0f
};
Run Code Online (Sandbox Code Playgroud)

如何将黑色背景更改为其他颜色?

c++ opengl

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

将对象作为参数传递给另一个类 C++ 的构造函数

我正在尝试使用 Nokia5110 LCD 创建一个用户界面类,用于显示从 API 检索的天气预报,但是当我尝试将对 .ino 的引用传递给Adafruit_PCD8544 Object构造函数时,出现错误班级。

一些帮助将受到高度赞赏。我得到的错误:

“错误:没有匹配的函数可调用 Adafruit_PCD8544::Adafruit_PCD8544()

这是 main.ino 文件:

// Nokia 5110 LCD pinout connections to nodeMCU8266
#define CLK_PIN D1  // Serial clock out (SCLK)
#define DIN_PIN D2  // Serial data out (DIN)
#define DC_PIN  D5  // Data/Command select (D/C)
#define CS_PIN  D6  // lCD chip select (CS)
#define RST_PIN D4  // LCD reset (RST)

Adafruit_PCD8544 display = Adafruit_PCD8544(CLK_PIN, DIN_PIN, DC_PIN, CS_PIN, RST_PIN);
UI_Nokia5110 UI(display);
Run Code Online (Sandbox Code Playgroud)

这是 UI.h 的头文件:

#ifndef UI_WEATHER_API_H
#define …
Run Code Online (Sandbox Code Playgroud)

c++ arduino

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

如何通过自定义比较谓词根据键和值对 std::multimap 条目进行排序?

我正在寻找一种方法按键按升序std::multimap对条目进行排序,但如果键匹配,则按值按降序排序

是否可以使用自定义Compare谓词来实现?

c++ sorting multimap comparator

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