【发布时间】:2015-02-10 14:40:05
【问题描述】:
所以我有以下功能:
GraSys::CRectangle GraSys::CPlane::boundingBox(std::string type, std::string color)
{
CRectangle myObject = CRectangle(color);
return myObject;
}
既然 boundingBox 是命名空间 GraSys 的一部分,我必须使用它来声明这个函数,为什么我不需要在函数内部这样做?为什么我可以直接使用?为什么它让我编译没有问题?
CRectangle myObject = CRectangle(color);
安装:
GraSys::CRectangle myObject = GraSys::CRectangle(color);
希望我的问题没有混淆。
【问题讨论】:
-
如果我不得不猜测,那是因为函数定义的范围继承了声明类(以及函数本身)的任何地方的范围,它位于命名空间内。
-
因为 GraSys 既是一个对象的命名空间,也是一个使用构造函数的对象。它告诉它它是 A GraSys::CRectangle 并为其分配一个 CRectangle(color) 。如果你使用 using namespace GrySys,你将可以在代码中省略它。
标签: c++ function namespaces