如何将类定义分成2个头文件?

Ord*_*rdi 4 c++ class

我需要拆分一个类(.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)

如何在没有冲突的情况下正确完成?

先感谢您.

ten*_*our 9

你可以在技术上做到这一点,但它很难看.不要这样做.

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)

我希望很清楚这有多恶心:)

  • +1为'黑客'思维.并且+1可能会破坏IntelliSense以及所有其他类似的东西:P (3认同)

πάν*_*ῥεῖ 5

“我怎样才能在没有冲突的情况下正确地做到这一点?”

你不能。在 c++ 中不可能在多个头文件中传播类声明(与 c# 不同)。所有类成员的声明必须出现在类声明主体中,在使用该类的每个翻译单元中可见的单个点。

您可以将模板专业化或实现分开,以分开标头。


SHR*_*SHR 5

您可以使用继承将类拆分为两个标题。

您可以在基类上声明一半类,在派生类上声明另一半类。

像这样:

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 个文件。