我试图在C++类中实现一个成员函数,该类具有auto参数(lambda)和带有默认值的int参数.像这样的东西:
class Base {
public:
int add_one(auto fobj, int b=3);
};
int Base::add_one(auto add_fcn, int b) {
return add_fcn(1, b);
}
Run Code Online (Sandbox Code Playgroud)
但是,像这样的简单测试无法编译:
#include <iostream>
class Base {
public:
int add_one(auto fobj, int b=3);
};
int Base::add_one(auto add_fcn, int b) {
return add_fcn(1, b);
}
int main() {
int ans;
auto add_fcn = [](int a, int b) -> int {return a + b;};
Base obj;
ans = obj.add_one(add_fcn);
std::cout << ans << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器(MinGW 7.2.0,flags:-std = c ++ …
我试图使用函数strcat()连接两个char数组.然而程序崩溃了.
#include <cstdio>
#include <cstring>
int main() {
const char *file_path = "D:/MyFolder/YetAnotherFolder/test.txt";
const char *file_bk_path = strcat(strdup(file_path), ".bk");
printf("%s\n", file_bk_path);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对我来说最奇怪的是程序在崩溃之前确实产生了一个输出:
d:/MyFolder/YetAnotherFolder/test.txt.bk
这个问题的原因是什么以及如何修复?
在Windows(MinGW 7.2.0)中重现错误状态.