2

我知道,我知道,这个问题已经讨论过很多次了。“只需在任何其他前向声明之前前向声明您的班级,它就会起作用。”

我重新打开这个问题,因为对我来说它根本不起作用。我有 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 文件;-)

4

1 回答 1

1

解决方案非常简单:我必须在Tools-Options-Text Editor-C/C++/Advanced的Browsing/Navigation部分重置默认选项。

如果有一天您遇到同样的问题,请尝试恢复这些选项的默认值。

于 2013-04-29T13:08:08.000 回答