首先:我已阅读并且我现在知道在C++中虚拟模板成员函数(但是?)是不可能的.解决方法是将类作为模板,然后在member-function中使用template-argument.
但是在OOP的上下文中,我发现如果该类实际上是一个模板,下面的例子将不会非常"自然".请注意,代码实际上不起作用,但gcc-4.3.4报告:error: templates may not be ‘virtual’
#include <iostream>
#include <vector>
class Animal {
public:
template< class AMOUNT >
virtual void eat( AMOUNT amount ) const {
std::cout << "I eat like a generic Animal." << std::endl;
}
virtual ~Animal() {
}
};
class Wolf : public Animal {
public:
template< class AMOUNT >
void eat( AMOUNT amount) const {
std::cout << "I eat like a wolf!" << std::endl;
}
virtual ~Wolf() {
}
};
class Fish : public …Run Code Online (Sandbox Code Playgroud) 我知道这个问题有很多答案.但是,我发现它们中没有一个能够真正实现它.
有人认为一个循环(几乎)与强连通组件相同(s.在有向图中查找所有循环),因此可以使用为该目标设计的算法.
有人认为找到一个循环可以通过DFS完成并检查后端(s.文件依赖关系的boost图文档).
我现在想对是否可以通过DFS检测图中的所有循环并检查后沿有一些建议?
http://www.me.utexas.edu/~bard/IP/Handouts/cycles.pdf(在SO上找到)陈述了一种基于循环基础的方法.我个人而言,我觉得它不是很直观,所以我正在寻找一个不同的解决方案.
编辑:我最初的意见显然是错误的.S."Moron"的下一个回答.
初步意见:我的观点是它确实可以这样工作,因为DFS-VISIT(DFS的伪代码)刚刚进入尚未访问过的每个节点.从这个意义上讲,每个顶点都表现出一个潜在的循环开始.此外,由于DFS每次访问每个边缘,因此也会覆盖通向循环起点的每条边.因此,通过使用DFS和后沿检查,确实可以检测图中的所有周期.注意,如果存在具有不同数量的参与者节点的循环(例如,三角形,矩形等),则必须进行额外的工作以区分每个循环的实际"形状".
我是autotools的新手,并且设法创建了一个令人满意的configure.ac.现在我想在某个地方(configure.ac,Makefile.am或者其他地方)指定在成功"make"之后,打印一个简短的注释.像"确保你在LD_LIBRARY_PATH中也包含了正确的路径"之类的东西.
但是,当我在Makefile.in中指定它时,执行"automake"会覆盖此文件(如预期的那样).所以我还没有找到如何扩展例如Makefile.am以包含"echo确保你在一个目标的编译终止时也包含了LD_LIBRARY_PATH中的正确路径".ATM我只有一个目标(bin_PROGRAMS = myprog).除此之外,编译等工作正常.但作为可能"没有"经验的用户的信息,我真的想打印出一些最终的建议.
有没有办法实现这个目标?
感谢你并致以真诚的问候.
PS我知道cmake并且尚未使用它,目前,我想使用autotools和automake.
当使用包括 iTerm 在内的 Mac OS X 时,我只需按
Shift+即可$,我当前提示的 bash 行将添加#到开头并返回该行。我非常喜欢这个,因为它可以防止在编辑命令时实际执行该命令,并且我不必跳到行的开头来插入该#字符。但是,当我登录到我们的集群时,此功能就会丢失。我尝试搜索此功能,但只找到有关使用 sed 等的帖子,因此建议不适用于我所指的使用 bash 的交互式类型。
有人可以向我指出解释此功能的资源(bash 指南吗?),以便我可以查找如何在登录其他计算机时使其工作?或者这是 Mac/iTerm 特定的东西?但是,我希望它也能在我们的集群上工作,当然只要我使用我的机器。