std::vector 实例化不需要类定义
朋友问一个问题,如下代码,是不是可以通过编译,我看了下,觉得很有意思,故记录下:
Point3D.h
#pragma once
class CPoint3D
{
public:
CPoint3D(void);
public:
~CPoint3D(void);
};
Line3D.h
#pragma once
#include <vector>
class CPoint3D;
class CLine3D
{
public:
CLine3D(void);
public:
~CLine3D(void);
private:
std::vector<CPoint3D> m_Points;
};
Line3D.cpp
#include "Line3D.h"
#include "Point3D.h"
CLine3D::CLine3D(void)
{
}
CLine3D::~CLine3D(void)
{
}
按照一般经验,Line3D的对象实例化的时候,是需要Point3D的对象定义,以决定Line3D自己的内存布局,但是注意这里,在Line3D.h中,只是有CPoint3D的前置申明,没有详细定义,这个编译运行,却是没有问题的。
下面是描述以上一般情况的代码
一般情况
#pragma once
class CPoint3D;
class CLine3D
{
public:
CLine3D(void);
public:
~CLine3D(void);
private:
顶(0)
踩(0)
上一篇:C++指针的本质
下一篇:C++中const用法浅析
- 最新评论
