我有一个类的方法,我也希望能够用作谓词.
class MyClass {
bool ParticleHasAncestor(const Particle &particle, int id) const;
class AncestorPredicate {
int mId;
public:
AncestorPredicate(int idCode) : mId(idCode) { }
bool operator()(const Particle &particle) const { return ParticleHasAncestor(particle, mId); }
};
};
Run Code Online (Sandbox Code Playgroud)
但是,编译器抱怨没有ParticleHasAncestor()MyClass实例就无法使用.我需要使用朋友班吗?或者有更好的解决方案吗?
我没有使用C++ 11,所以不能使用lambda函数.
更新: ParticleHasAncestor()无法使其成为静态,因为它使用MyClass的成员.
我刚刚发现了Travis-CI,它似乎对测试Homebrew公式是否在不同系统上正确构建非常有用,特别是因为Homebrew已经安装在他们的VM上.简而言之,我有一个Homebrew tap,并希望使用Travis-CI来测试不同系统上的公式.
我看到这个工作的方式是有一个测试脚本,如:
brew update
brew tap <my/tap>
brew install <package>
brew test <package>
Run Code Online (Sandbox Code Playgroud)
但我能看到的一些问题是:
关于这两点,有谁可以帮忙提一些建议?
为什么C++没有为我们提供一个以数组作为参数的构造函数?或者,定义以下功能有什么问题吗?
template <class T>
std::set<T> ArrayToSet(T array[]) {
return std::set<T>(array, array + sizeof(array) / sizeof(array[0]));
}
Run Code Online (Sandbox Code Playgroud)
我认为答案可能归结为动态内存分配的想法,但我想听听一些有关此问题的反馈.
编辑:我没有使用C++ 11.