我正在使用c ++ boost库来构建图形。我必须在Ubuntu和Windows上工作,但是当我的代码在Ubuntu 14.04上运行时,它将无法在Windows 8.1上运行。 我正在使用Eclipse luna作为IDE,但是当我切换到Windows时,我得到的对象是“无效的模板参数错误”:
std::pair<boost::graph_traits<adjacency_list<> >::edge_descriptor,bool> e;
或
typedef graph::adjacency_iterator adj_i;
std::pair<adj_i,adj_i> adj_v=adjacent_vertices (7,g);
,而
std::pair<int,int> id_v;
运行顺利。 我尝试使用VC ++工具链和MinGW GCC,但它不起作用。 有什么想法吗?
@迈克尔 当然!
using namespace boost;
int main() {
std::pair<int,int> id_v; //no problem
std::pair<graph_traits<adjacency_list<> >::edge_descriptor,bool> e; //works on linux
//error on windows
typedef boost::graph_traits<adjacency_list<> >::edge_descriptor edge_d;
std::pair<edge_d,bool> e; //error
typedef adjacency_list<multisetS, vecS, directedS> graph;//error
std::pair<graph_traits<graph>::edge_descriptor,bool> e_0;//same
std::pair<graph::edge_descriptor,bool> e_1;//again
return 0;
}
如您所见,这个简单的代码返回错误;我不是一个有升级图的专家,但如果它适用于linux,为什么它不能在这里工作?它表示模板参数无效并返回超过100(!)个错误,如:
'__ int64'没有命名类型;第144行,外部位置:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ include \ stdio.h C / C ++问题
一个问题。我设置了MinGW工具链;使用VC包含是否正常?也许是微不足道的,但我从未使用过windows进行编程。
感谢大家!