Polyhedron类模板是Point类模板的友元类,在Polyhedron声明时需要注意什么
时间: 2024-02-11 19:09:07 浏览: 129
Polyhedron函数测试代码
在声明 Polyhedron 类模板时,需要注意以下几点:
1. 需要在类模板声明前声明 Point 类模板,或者将 Point 类模板声明放在头文件中,以便在 Polyhedron 类模板中使用。
2. Polyhedron 类模板需要访问 Point 类模板的成员变量和成员函数,因此需要将 Point 类模板作为 Polyhedron 的友元类。
3. 如果 Point 类模板和 Polyhedron 类模板都在命名空间中,需要在 Polyhedron 类模板声明中使用命名空间限定符,例如:
```
namespace mynamespace {
template<typename T>
struct Point {
T x, y, z;
};
template<typename T>
class Polyhedron {
public:
// ...
private:
std::vector<Point<T>> vertices_;
// ...
};
// 声明 Point 为 Polyhedron 的友元类
template<typename T>
class Polyhedron;
template<typename T>
class Polyhedron<T>::Point;
}
```
在上面的例子中,我们使用了命名空间 "mynamespace",声明了 Point 类模板和 Polyhedron 类模板。在 Polyhedron 类模板中,我们使用了 Point 类模板的成员变量 "vertices_",并将 Point 类模板声明为 Polyhedron 类模板的友元类。注意,在声明 Point 为 Polyhedron 的友元类时,需要使用作用域限定符 "::" 连接类名和成员名。
阅读全文