我知道,我知道,这个问题已经讨论过很多次了。“只需在任何其他前向声明之前前向声明您的班级,它就会起作用。”
我重新打开这个问题,因为对我来说它根本不起作用。我有 Visual Studio 2012 更新 1。我在 Win 7/x64 上使用 x64 中的 C++/CLI 进行开发。这是我的头文件的样子:
#pragma once
namespace MyNameSpace
{
ref class MyForwardDeclaredClass;
public ref class MyClass : public System::Windows::Forms::UserControl
{
public:
// My declaration here
MyForwardDeclaredClass^ mObjectPtr;
}
}
当我启动设计时,我收到消息The class MyClass can be designed, but is not the first class in the file。Visual Studio 要求设计人员使用文件中的第一个类。
因此,根据许多人的建议(这些建议似乎对许多人有用),我添加了以下内容:
ref class MyClass; // <-- ADDED FORWARD DECLARATION HERE!
ref class MyForwardDeclaredClass;
public ref class MyClass : public System::Windows::Forms::UserControl
{
// ...
我仍然收到相同的错误消息。请注意,我还重新启动了 Visual Studio,清理了项目,并重新构建了它。
注意:我尝试删除前向声明并添加 #include "MyForwardDeclaredClass.h" 代替。我得到了同样的错误。
我们最近从 VS2005 迁移到 VS2012。有了VS2005,设计师的使用就马马虎虎了。但它大部分时间都有效。现在,大多数时候我无法让它工作,也找不到任何解决方法。
任何的想法?
编辑
好的,按照我得到的建议,我删除了 .suo 和 .sdf 文件,然后重新加载了解决方案,然后重新构建了它。没什么好的。我使用相同的代码文件重新创建了一个新项目:没什么好处。是的,我的项目中有 .cpp 文件;-)