小编Dan*_*izo的帖子

带有auto和default参数的C++成员函数

我试图在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 ++ …

c++ lambda class

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

当输入超过39个字符时,使用strdup和strcat创建文件路径的程序崩溃

我试图使用函数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)中重现错误状态.

c++ arrays char

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

标签 统计

c++ ×2

arrays ×1

char ×1

class ×1

lambda ×1