作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对仿函数没有经验,想了解一些基础知识。我想要的只是一个仿函数,它将接受一个字符串并返回相同的字符串,并将所有值更改为大写。我有以下代码:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
class myFunctor {
private:
public:
myFunctor(string) {};
string operator() (string);
};
string myFunctor::operator() (string stringToConvert) {
transform(stringToConvert.begin(), stringToConvert.end(), stringToConvert.begin(), toupper);
return stringToConvert;
}
int main() {
myFunctor convert("i want this string converted");
return 0;
}
这显然不会在屏幕上打印任何内容,但我希望有人能帮助解释我必须进一步做什么才能在此处获得所需的结果,以便我能更好地理解该系统的工作原理。
提前感谢您的帮助!
最佳答案
对于初学者来说,仿函数是一个实现operator()
的对象。它不是构造函数接受参数的对象(尽管特殊用途的仿函数可以,但这里不是这种情况)。所以第一个错误是你的仿函数有一个构造函数:
myFunctor(string) {};
而且,这个构造函数不对其参数做任何事情。所以这应该是第一个线索,在你的情况下,你的仿函数的构造函数应该没有参数,应该只是:
myFunctor() {}
或者,完全忘记构造函数,让仿函数类使用它的默认构造函数。
现在,有了它的默认构造函数,是时候构造它了:
myFunctor convert;
然后,调用仿函数:
std::cout << convert("i want this string converted") << std::endl;
关于c++ - 使用仿函数改变大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988854/
我是一名优秀的程序员,十分优秀!