【发布时间】:2020-04-27 04:27:51
【问题描述】:
当我在命名空间 mynamespace 中有一个 C++ 类 MyClass 时,我将其方法实现为
void mynamespace::MyClass::method() { … }
我可以将其包装在命名空间中以将单个定义缩短为
namespace mynamespace {
void MyClass::method() { ... }
}
有没有办法避免重新输入MyClass::,这样我就可以在签名更改时更轻松地将{ 之前的所有内容作为原型复制到标题中,而不必每次都删除MyClass:: ?
我想“一个类也是一个命名空间,也许我可以做到”
namespace mynamespace::MyClass {
void method() { ... }
}
但这抱怨我将 MyClass 重新定义为不同的东西。 using mynamespace::MyClass; 也不起作用(但无论如何都会很糟糕,因为如果它起作用,我将如何在该文件中该行下方的任何位置声明一个独立函数)。
是否有解决方案,或者在 C++ 中根本不可能?
【问题讨论】:
-
(99% 确定)不。类名必须出现,否则不知道该方法属于哪个类。
-
当然,您可以在实现类的同时实现您的方法。但我有一种感觉,这不是你想听到的。
-
如果你使用 IDE,你可以使用自动补全
-
添加到@foreknownas_463035818,一些IDE还可以“复制签名”函数
-
如果头文件中还没有新方法的声明,则无法自动完成,通常IDE会根据头文件自动完成,所以如果我编辑实现,我无法自动完成遗憾的是,将实现的签名编辑到标题中。
标签: c++ namespaces code-formatting