未声明的标识符 我正在使用.NET的C++应用程序,我遇到了一个我似乎无法解决的问题。我正在尝试实现一些控制器类。顶部区块是my.h文件,底部区块是.cpp文件。我得到的错误是: 'ComposeMail' : undeclared identifier 'email' : undeclared identifier syntax error : identifier 'ComposeMail'

未声明的标识符 我正在使用.NET的C++应用程序,我遇到了一个我似乎无法解决的问题。我正在尝试实现一些控制器类。顶部区块是my.h文件,底部区块是.cpp文件。我得到的错误是: 'ComposeMail' : undeclared identifier 'email' : undeclared identifier syntax error : identifier 'ComposeMail',.net,c++-cli,.net,C++ Cli,我的include语句几乎不起作用 标题: #pragma once #include "ComposeMail.h" class MainWindowController{ public: MainWindowController(void); void ComposeClick(void); }; 实施: #include "StdAfx.h" #include "MainWindowController.h" MainWindowController::MainWindowC

我的include语句几乎不起作用

标题:

#pragma once
#include "ComposeMail.h"

class MainWindowController{
public:
  MainWindowController(void);
  void ComposeClick(void);
};
实施:

#include "StdAfx.h"
#include "MainWindowController.h"

MainWindowController::MainWindowController(void)
{
}

void MainWindowController::ComposeClick(void){
  ComposeMail^ email = gcnew ComposeMail();
}

如果没有ComposeMail.h中的ComposeMail代码,我们就无法真正回答


编译器说ComposeMail尚未声明,因此您必须检查include以查看它丢失的位置,可能是因为宏fu,也可能是因为某个地方的键入错误。

好的,我找到了……我的ComposeMail代码构造函数位于我们项目的名称空间Firemail名称内,因此我必须编写 使用名称空间FireMail;
在我的.h文件中。这起作用了。感谢您的回答。

您需要发布ComposeMail中的内容。不要将使用命名空间的内容放在头文件中。不赞成使用名称空间指令。相反,为类添加前缀:FireMail::ComposeMail^email=gcnewfiremail::ComposeMail;。这通常也会增加可读性。如果确实要使用using指令,请将其放在.cpp文件中,以便不影响包含标头的其他源文件。最后,您可以使用另一种using指令:usingfiremail::ComposeMail。这只将一个类移动到当前命名空间中。感谢您的建议。我一定会这么做的。