的模板,所以我有代表说,自定义集合如下模板:C++构造模板
template <typename T> class MyCollection {
private:
std::vector<T> v;
public:
MyCollection(int n) {
v.resize(n);
}
etc
}
但是现在,我要实例MyCollection的对象MyCollection的,所以我做这在我的主程序:
MyCollection<MyCollection<int>> mycoll= MyCollection<MyCollection<int>>(100);
这确实会编译(我的MAC,使用以下):
clang++ -std=c++11 -stdlib=libc++ test.cpp
问题是我得到这样一个链接器错误:
Undefined symbols for architecture x86_64:
"std::__1::__vector_base_common<(unsigned char)1>::__throw_length_error() const", referenced from:
std::__1::vector<MyCollection<int>, std::__1::allocator<MyCollection<int> > >::allocate(unsigned long) in test-891fb4.o
这究竟是什么,我该如何解决它?它看起来像一个关于vector>的分配器丢失了吗?为什么会发生这种情况,我该如何解决?
默认的C++运行时是GNU实现,并在使用libC++编译时混淆链接器。 –
那么我该如何解决这个问题? – Marc
你试过了吗?clang ++ -std = C++ 11 -stdlib = libC++ test.cpp -lsupC++'? libsupC++定义了异常 – Praetorian