Visual c++ 可重用类-使用;“摘要”;而不是预定义的

Visual c++ 可重用类-使用;“摘要”;而不是预定义的,visual-c++,windows-runtime,c++-cx,Visual C++,Windows Runtime,C++ Cx,我正在构建一个应用程序,其中有多个类继承自单个基类。假设我有这样的声明: ref class WorkScreenBase abstract { internal: WorkScreenBase(void); bool isLoaded; } 我有几个实现它的类,例如: ref class MainScreen : public WorkScreenBase { internal: MainScreen(void); ~MainScreen(void); } 在应用程

我正在构建一个应用程序,其中有多个类继承自单个基类。假设我有这样的声明:

ref class WorkScreenBase abstract
{
internal:
   WorkScreenBase(void);
   bool isLoaded;
}
我有几个实现它的类,例如:

ref class MainScreen : public WorkScreenBase
{
internal:
   MainScreen(void);
   ~MainScreen(void);
}
在应用程序的另一部分中,我希望为
WorkScreenBase
的任何潜在实现提供一个容器,因此我尝试使用:

WorkScreenBase^ myCurrentBase;
然而,这似乎是非法的。解决这个问题的最佳方法是什么


更新:我可以使用
MainScreen^myCurrentScreen
,但出于灵活性的考虑,我更愿意使用基类作为参考点。

这个问题以我意想不到的方式得到了解决(至少根据抛出的编译器错误)。问题出在头文件交叉引用中。不知何故,在头罩和
#pragma once
的情况下,我最终得到了一个循环.h引用

所以,结论

  • 编译器可能会抛出可能无法准确描述 问题
  • 仔细检查标题是否有循环引用。标题保护和
    #pragma once
    是好的,但不会帮助你克服这一点

为什么你会说“这似乎是非法的”?< C++ > WorkStudioBaseMyCurraseBase>代码是C++中的非法语法。删除C++标签。可能这是C++-CLI或其他非C++语言?这一行抛出了一个“缺少类型说明符”。据我所知,由于明显的原因(抽象类),我无法将其作为对象保存,因此我想知道可能会出现什么问题。确切的错误是什么(带有错误编号),您能否提供一个小型的、自包含的示例来演示此问题?听起来好像您缺少一个包含文件,或者忘记用名称空间限定名称(这些只是猜测;没有看到真实代码,很难说清楚)。您是将属性(myCurrentBase)声明为public还是internal?如果要在基类中将中声明为public,则需要将其作为属性。