我需要复制std::set到std::vector:
std::set <double> input;
input.insert(5);
input.insert(6);
std::vector <double> output;
std::copy(input.begin(), input.end(), output.begin()); //Error: Vector iterator not dereferencable
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
有以下简化的数据结构:
Object1.h
template <class T>
class Object1
{
private:
T a1;
T a2;
public:
T getA1() {return a1;}
};
Run Code Online (Sandbox Code Playgroud)
Object2.h
template <class T>
class Object2: public Object1 <T>
{
private:
T b1;
T b2;
public:
T getB1() {return b1;}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法如何在下面的函数中获取对象的类型T:
Functions.h
template <class Object>
void (Object *o1, Object *o2)
{
T = o1.getA1(); //Is it possible to get T from object o1?
...
}
Run Code Online (Sandbox Code Playgroud)
或者我们必须提供有关这两个对象的数据类型的其他信息:
template <class T, class Object>
void (Object *o1, Object *o2)
{
T = o1.getA1(); …Run Code Online (Sandbox Code Playgroud)