[英]Workaround for ifdef / ifndef
我有一个A
类,以及两个继承自A
类B
和C
除了A
的方法外,每个类都提供不同的东西,因此,我想将它们放在两个不同的文件中b.hpp
和c.hpp
,因为它们是带有内联函数的模板。
我也有一个User
类,同时使用B
和C
类。 在user.cpp
,我应该接近:
# include "b.hpp"
# include "c.hpp"
class User{
...;
};
这将引发编译器重新定义错误,因为我将B
和C
都保留在bc.hpp
。
这里的关注点是美学上的问题,而不是编程错误:我只是在小型应用程序中使用ifdef / ifndef
指令找不到很好的选择 -在我看来,它们始终像IDE的解决方案,适用于管理过多模块的人员,对于那些甚至不了解这些模块的人了解指令。
是否有任何解决方法( 甚至是非标准方法,但至少是明智的方法),还是我必须坚持在同一文件中使用两个不同的类并使用ifdef / ifndef
?
如果您在头文件中表示不,则没有一种可移植的好方法。 标准做法是将所有头文件的格式保持为-
#ifndef MYHEADER_HPP
#define MYHEADER_HPP
// ... content
#endif
任何其他方式都是非标准的,不是真正的 C ++。
您始终可以使用#pragma once
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.