我需要拆分一个类(.h文件)
#ifndef _L_H
#define _L_H
template<class L> class Myclass{
public:
L();
firstoperator(..);
secondoperator(..);
private:
...
}
template <class L> Myclass<L>::L() ...
template <class L> Myclass<L>::firstoperator(..) ...
template <class L> Myclass<L>::secondoperator(..) ...
以两种不同的.h文件格式如下:
#ifndef _L_H
#define _L_H
template<class L> class Myclass{
public:
L();
firstoperator(..);
private:
...
}
template <class L> Myclass<L>::L() ...
template <class L> Myclass<L>::firstoperator(..) ...
#ifndef _L_H
#define _L_H
template<class L> class Myclass{
public:
secondoperator(..);
}
template <class L> Myclass<L>::secondoperator(..) ...
如何在没有冲突的情况下正确地做到这一点?
提前谢谢。
答案 0 :(得分:9)
你可以在技术上做到这一点,但它很难看。 不要这样做。
Class1.hpp:
class MyClass
{
int something;
int somethingElse;
Class2.hpp:
int somethingBig;
int somethingSmall;
};
我希望很清楚这有多恶心:)
答案 1 :(得分:4)
“如果没有冲突,我怎么能正确地做到这一点?”
你做不到。在c ++中,不可能在几个头文件上传播类声明(与c#不同)。所有类成员的声明必须出现在类声明体中,在每个使用该类的翻译单元中看到的单个点。
您可以将模板特化或实现分开来分隔标题。
答案 2 :(得分:1)
您可以使用遗产将类拆分为两个标题。
您可以在基础上声明半类,而在派生的基础上声明另一半。
像这样:class C12{
public:
void f1();
void f2();
};
可以拆分为C1和C12
class C1{
public:
void f1();
};
class C12: public C1{
public:
void f2();
};
现在C12与之前相同,但分为2个文件。