从 class 模板继承需要 iostream
iostream required for inheriting from class template
从 class 模板(例如对)导出 class 时,我们似乎需要包含 iostream:
此代码有效:
#include <iostream>
class Vector: public std::pair<double,double> {
public:
Vector() {}
Vector(double a, double b): std::pair<double,double> (a,b) {}
};
int main
{
return 0;
}
但是如果我们省略 #include <iostream>
它甚至不会编译:
5 error: expected template-name before '<' token
这种继承需要iostream
的什么特性?
What feature of iostream is required for this kind of inheritance?
没有特色。只是在您的系统上 <iostream>
可能包括 <utility>
header,其中定义了 std::pair
。这意味着您得到了正确 header 的传递包含。标准 header 允许相互包含作为实现细节,但这不是可以移植依赖的东西。
你应该放弃恰好有效的错误 header,选择正确的。
从 class 模板(例如对)导出 class 时,我们似乎需要包含 iostream:
此代码有效:
#include <iostream>
class Vector: public std::pair<double,double> {
public:
Vector() {}
Vector(double a, double b): std::pair<double,double> (a,b) {}
};
int main
{
return 0;
}
但是如果我们省略 #include <iostream>
它甚至不会编译:
5 error: expected template-name before '<' token
这种继承需要iostream
的什么特性?
What feature of iostream is required for this kind of inheritance?
没有特色。只是在您的系统上 <iostream>
可能包括 <utility>
header,其中定义了 std::pair
。这意味着您得到了正确 header 的传递包含。标准 header 允许相互包含作为实现细节,但这不是可以移植依赖的东西。
你应该放弃恰好有效的错误 header,选择正确的。