我有一个填充字符串向量的实例方法。我试图找到一个包含特定子字符串的向量条目(目前,该子字符串是固定的 - 简单)。
我有一个.h
:
namespace Data
{
namespace Shared
{
class Logger
{
public:
bool FindLogDirectoryPredicate(const string &str);
int GetLogDirectory(string logConfigFile, string& logDirectory);
...
}
}
}
和.cpp
:
#include <algorithm>
#include <vector>
#include "Logger.h"
bool Logger::FindLogDirectoryPredicate(const string &str)
{
// Return false if string found.
return str.find("File=") > 0 ? false : true;
}
int Logger::GetLogDirectory(string logConfigFile, string& logDirectory)
{
vector<string> fileContents;
...
vector<string>::iterator result = find_if(fileContents.begin(), fileContents.end(), FindLogDirectoryPredicate);
...
}
在 Visual Studio 2010 中编译它,我收到:
Error 7 error C3867: 'Data::Shared::Logger::FindLogDirectoryPredicate': function call missing argument list; use '&Data::Shared::Logger::FindLogDirectoryPredicate' to create a pointer to member Logger.cpp 317 1 Portability
在 find_if 调用中的函数 ref 前面加上 & 会导致:
Error 7 error C2276: '&' : illegal operation on bound member function expression Logger.cpp 317 1 Portability
我确实尝试将谓词函数放在类之外,但这似乎不起作用 - 给了我一个未找到函数的错误。尝试用类名限定谓词......这给了我一个不同的算法错误(标题):
Error 1 error C2064: term does not evaluate to a function taking 1 arguments c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm 83 1 Portability
我从这里开始的示例似乎表明这相对简单....那我做错了什么?