从类模板继承时需要iostream

iostream required for inheriting from class template

本文关键字:iostream 继承      更新时间:2023-10-16

当从类模板(例如对(派生类时,我们似乎需要包含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的什么特性?

这种继承需要iostream的什么功能?

无功能。只是在您的系统上,<iostream>可能包含定义std::pair<utility>标头。这意味着您获得了正确标头的可传递包含。标准头可以相互包含作为实现细节,但这不是一个可以移植的东西

你应该放弃错误的标题,而选择正确的标题。