我正在使用systemd日志来创建自定义日志处理程序.我正在尝试使用sd_journal API,但我有几个问题:
以下是我使用的示例代码:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <systemd/sd-journal.h>
#include <systemd/sd-daemon.h>
int main(int argc, char *argv[]) {
int ret_val = 0;
int count = 0;
sd_journal *jd;
sd_journal_print(LOG_INFO, "Hello World, this is PID %lu!", (unsigned long) getpid());
do {
ret_val = sd_journal_open (&jd, SD_JOURNAL_SYSTEM | SD_JOURNAL_RUNTIME_ONLY | SD_JOURNAL_LOCAL_ONLY);
if (ret_val != 0) {
fprintf(stderr, "Failed to open journal: %s\n", strerror(-ret_val));
break;
}
printf ("Current …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个派生类对象并使用现有的基类对象填充数据成员(来自基类)。
\n\n在我的流程生命周期中,我已经有一个基类对象。对于某些决定,我必须创建一个新对象(从基类派生)。实现此目的的一种方法是公开评估者并复制数据。有没有我可以使用聚合初始化或dynamic_cast之类的解决方案?
\n\n#include <iostream>\n#include <string>\n\nusing namespace std;\n\nclass Base {\n protected: \n string name_;\n\n public:\n Base() : name_ ("foo")\n {\n }\n void ChangeName()\n {\n name_ = std::string {"bar"};\n }\n};\n\nclass Child final : Base {\n public:\n string GetName()\n {\n return name_;\n }\n};\n\nint main()\n{\n Base b;\n b.ChangeName();\n\n Child c = {b};\n cout<<"Hello World. Here is my name: " << c.GetName() << endl;\n\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n预期输出:\n 你好世界。这是我的名字:酒吧
\n
编译错误
\n\ntry.cpp:33:17: error: could not convert \xe2\x80\x98{b}\xe2\x80\x99 from \xe2\x80\x98<brace-enclosed initializer …Run Code Online (Sandbox Code Playgroud)