C ++自定义类限制功能

时间:2015-07-09 18:31:00

标签: c++ class visual-studio-2013 header-files

假设我已经定义了一个自定义类,当且仅当在主应用程序中定义了另一个头文件时,我才想使用该类中的函数。

换句话说:除非主应用程序中包含特殊的头文件,否则我不想使用自定义类中的某些功能。

如果我在主应用程序中有自定义类定义。然后我会使用#ifdef _SOME_STUFF_H#endif。这在头文件中不起作用(为什么我猜?)。

问题本身:我是否尝试实现完全无意义的内容,并且应该只包含所有必需的标题?

道歉,如果问题听起来不完全清楚。

类的代码示例(假设类在主应用程序中定义。):

class someClass
{
public:
    void doThis();

    #ifdef _SOME_HEADER_H
    //uses stuff from some_header.h
    void doThat();
    #endif
};

void someClass::doThis()
{}

#ifdef _SOME_HEADER_H
//uses stuff from some_header.h
void someClass::doThat()
{}
#endif

组合并且工作正常等等。

如果我们将类分隔为header和source,我们将在main中包含someClass。

如果我在自定义类位于主应用程序中时构建解决方案。它会编译是否包含some_stuff.h(应该如此)。 如果我以另一种方式构建它(不包括自定义类头中的some_stuff.h,但在主应用程序中包含它。)它会给出“未解析的外部符号”。

1 个答案:

答案 0 :(得分:0)

为什么你认为#ifdef不起作用?头文件不是特别的;它们只是源代码,预处理和编译就像其他任何东西一样。只要确保你的标题按其依赖关系组织,即如果A.h依赖于B.h,则需要首先包含B.h.但这无论如何都适用。