我需要拆分一个类(.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(..) ...
Run Code Online (Sandbox Code Playgroud)
在两个不同的.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(..) ...
Run Code Online (Sandbox Code Playgroud)
#ifndef _L_H
#define _L_H
template<class L> class Myclass{
public:
secondoperator(..);
}
template <class L> Myclass<L>::secondoperator(..) ...
Run Code Online (Sandbox Code Playgroud)
如何在没有冲突的情况下正确完成?
先感谢您.
你可以在技术上做到这一点,但它很难看.不要这样做.
Class1.hpp:
class MyClass
{
int something;
int somethingElse;
Run Code Online (Sandbox Code Playgroud)
Class2.hpp:
int somethingBig;
int somethingSmall;
};
Run Code Online (Sandbox Code Playgroud)
我希望很清楚这有多恶心:)
“我怎样才能在没有冲突的情况下正确地做到这一点?”
你不能。在 c++ 中不可能在多个头文件中传播类声明(与 c# 不同)。所有类成员的声明必须出现在类声明主体中,在使用该类的每个翻译单元中可见的单个点。
您可以将模板专业化或实现分开,以分开标头。
您可以使用继承将类拆分为两个标题。
您可以在基类上声明一半类,在派生类上声明另一半类。
像这样:
class C12{
public:
void f1();
void f2();
};
Run Code Online (Sandbox Code Playgroud)
可拆分为C1和C12
class C1{
public:
void f1();
};
class C12: public C1{
public:
void f2();
};
Run Code Online (Sandbox Code Playgroud)
现在 C12 与以前相同,但拆分为 2 个文件。
| 归档时间: |
|
| 查看次数: |
4478 次 |
| 最近记录: |