【发布时间】:2017-12-09 19:35:06
【问题描述】:
我在尝试在头文件之外定义标签时遇到了一点问题。三天前我才开始尝试学习 C++,所以我可能在这里犯了一个我没有注意到的非常明显的错误。到目前为止,我还没有设法让它发挥作用。
我想在 MIDCSrc.cpp 中定义文本,而标签的声明在 MIDC.h 中。到目前为止,我在 MIDC.h 中所做的是:
*MIDC.h*
#include "MIDCSrc.cpp"
*VS Auto-generated code*
private: System::Windows::Forms::Label^ label1;
*VS Auto-generated code*
private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e)
{
textfunc2(label1);
}
在 MIDCSrc.cpp 中是:
#include "MIDC.h"
namespace MIDC
{
void textfunc2(System::Windows::Forms::Label^ aLabel)
{
aLabel->Text = "Wow!";
}
}
(我正在使用 Visual Studio 2017 社区)
问题是,我什至无法测试它是否会失败,因为它给了我一个 "Error C2084 function 'void MIDC::textfunc2(System::Windows::Forms::Label ^) '已经有一个主体"
正如我所说,如果这是一个明显的错误,我很抱歉,但我想不出这个可爱的错误。如果除了正文错误之外的代码有什么问题(我知道有),如果可能的话,告诉我。必须解决这个问题。
感谢回复的人:-)
【问题讨论】:
-
我不是 c++/CLI 专家,但
#including头文件中的 cpp 文件通常会导致灾难。这正常吗? -
.h包括.cpp,其中包括不好的.h。正如弗兰克所说,除非您完全确定自己在做什么,否则不要在标题中包含.cpp文件。 -
特别是没有某种标题保护。无限包含递归。
-
哼.. 没想到。现在,我怎样才能让程序识别 textfunc2,它在 .cpp 上,在 .h 上,以便它可以使用它? (不包括 .cpp)
-
听起来你需要回归基础。像这样的程序一开始可能有点太多了。
标签: c++ visual-c++ c++-cli visual-studio-community