可重用类 - 使用“抽象”而不是预定义

时间:2012-07-09 21:23:24

标签: 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);
}

在应用程序的另一部分中,我希望有一个容器用于WorkScreenBase的任何潜在实现,所以我试图使用:

WorkScreenBase^ myCurrentBase;

但是,这似乎是非法的。什么是解决问题的最佳方法?

UPDATE:我可以使用MainScreen^ myCurrentScreen,但出于灵活性原因,更倾向于使用基类作为参考点。

1 个答案:

答案 0 :(得分:0)

问题是以我没想到的方式修复的(至少根据抛出的编译器错误)。问题出在头文件交叉引用中。不知何故,无论是标题守卫还是#pragma once,我都得到了一个圆形的 .h 引用。

所以,结论

  • 编译器可能会抛出可能无法准确描述的错误 问题。
  • 仔细检查标题以获取循环引用。标题守卫和#pragma once都很好,但不会帮助你反对。