不同文件的类声明

nag*_*hna 6 c++ class declaration

我无法在这个网站上找到类似的问题,但是可以在两个不同的文件上声明一个类.

例如,文件和私有中的所有公共类组件以及不同文件中的其他组件.

publics.h

    class test {
     public:
        int geta();
        void seta(int); 
    };
Run Code Online (Sandbox Code Playgroud)

privates.h

    class test {
     private:
        int a;
    };
Run Code Online (Sandbox Code Playgroud)

上面的方法肯定是错的,但有没有这样的方法.

Fre*_*Foo 8

有一种方法可以获得非常相似的东西:私有继承.

// private.hpp
class test_details {
  protected:
    int a;
};

// public.hpp

#include "private.hpp"

class test : private test_details {
  public:
    int geta() const { return a; }
    void seta(int i) { a = i; }
};
Run Code Online (Sandbox Code Playgroud)

请注意,您仍然需要(间接)在使用公共类的任何模块中包含私有标头,因此您不会以这种方式隐藏任何内容.


Luc*_*ore 6

不是那样,而是皮普习惯用法(或不透明指针或Chesshire猫)可以帮助您实现类似的功能-您可以提供一个公共接口,其中所有实现细节都隐藏在实现成员中。

C ++不支持部分类。

另外,请注意,您拥有的是类定义,而不是声明。C ++要求,如果有一个类的多个定义可用,则它们必须相同,否则为未定义行为。