【问题标题】:#include .cpp in .h file before the end of include guard#include .cpp in .h file before include guard 结束
【发布时间】:2014-12-21 14:28:37
【问题描述】:

我最近收到了一个定义 .h 文件的任务。在底部的这个 .h 文件中,它#includes .cpp 文件。例如

#ifndef CLASS_H
#define CLASS_H

class MyClass
{
  //variablles and methods
};

#include MyClass.cpp

#endif 

现在,当我尝试为 .cpp 文件编写定义时,问题就出现了。例如,当我尝试定义构造函数时,会给我一个错误,类似于

 error: ‘MyClass’ does not name a type

我在尝试定义运算符重载函数时也会出错

我知道这些错误只适用于上述情况,因为当我在我的 .cpp 文件中 #include 我的 .h 文件时,它编译完美

我不允许更改此作业中的任何 .h 文件

【问题讨论】:

  • 你为什么要这样做?
  • 如果您要在.h 文件中包含.cpp 文件,请不要尝试编译.cpp 文件。
  • MyClass.cpp 放在标题中是没有意义的。把它拿出来。并记住在 cpp 文件中包含标题。
  • 我不确定他们的方法背后的原因。但是我能做些什么来让它正确编译吗?
  • @KeatonPennells 要正确编译什么?如果您将 .cpp 文件包含在其他文件中,则不应尝试编译 .cpp 文件,就像您通常从其他文件中包含 .h 文件一样,因此您不要尝试编译他们。

标签: c++ header-files


【解决方案1】:

不要在头文件中这样做: #include MyClass.cpp 单独编译 MyClass.cpp 并在 Myclass.cpp 中,有:

#include MyClass.hpp

#include MyClass.h

随便你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多