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)
上面的方法肯定是错的,但有没有这样的方法.
有一种方法可以获得非常相似的东西:私有继承.
// 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)
请注意,您仍然需要(间接)在使用公共类的任何模块中包含私有标头,因此您不会以这种方式隐藏任何内容.
不是那样,而是皮普习惯用法(或不透明指针或Chesshire猫)可以帮助您实现类似的功能-您可以提供一个公共接口,其中所有实现细节都隐藏在实现成员中。
C ++不支持部分类。
另外,请注意,您拥有的是类定义,而不是声明。C ++要求,如果有一个类的多个定义可用,则它们必须相同,否则为未定义行为。