- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
背景:我正在研究 framework它基于现有的 Java 类模型生成 C++ 代码。因此,我无法更改下面提到的循环依赖。
给定:
我在以下测试用例中对此进行了建模:
main.cpp
#include "Parent.h"
#include <iostream>
using std::cout;
using std::endl;
int main(int argc, char* argv[])
{
Parent parent;
cout << Parent::getType() << endl;
cout << parent.getChildren().getType() << endl;
return 0;
}
父类.h
#ifndef PARENT_H
#define PARENT_H
#include <string>
#include "Array.h"
class Child;
class Parent
{
public:
Array<Child> getChildren()
{
return Array<Child>();
}
static std::string getType()
{
return "parent";
}
};
#endif
child .h
#ifndef CHILD_H
#define CHILD_H
#include "Parent.h"
class Child: public Parent
{
};
#endif
数组.h
template <typename ElementType>
class Array
{
public:
static std::string getType()
{
return ElementType::getType();
}
};
当我编译上面的代码时,我得到: error C2027: use of undefined type 'Child'
在return ElementType::getType();
如果我尝试 #include "Child.h"
我得到的不是前向声明: error C2504: 'Parent' : base class undefined
在class Child: public Parent
如果我尝试 Array<Child*>
而不是 Array<Child>
我得到: error C2825: 'ElementType': must be a class or namespace when followed by '::'
在return ElementType::getType();
循环依赖的产生是因为:
有什么想法吗?
最佳答案
错误是由于在实例化模板时不存在子类。
将以下内容添加到 Main 或 Parent.h 的末尾:
#include "Child.h"
这在 g++ 4 和 VS 2010 上都能很好地编译。
关于c++ - 模板、循环依赖、方法,天哪!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3177227/
到目前为止,我尝试的任何方法都未能让 Firefox 在某些文本下划线。 根据 Google 结果,这个问题已为人所知并已记录了五年多......这不可能是真的......到底发生了什么? 有人知道任
考虑一个示例,其中方法是纯虚拟的,采用模板化类型的参数(从外部类型注入(inject)),并且该模板化类型是本地类型(在函数体中定义)。这种情况会导致 g++ 下的编译时错误。不可否认,这是一个极端案
更新“Web 应用程序”(从开发服务器“重新发布”到实时服务器)同时保留用户数据(例如存储在文件系统中的图像、视频和音频)的最佳方法是什么) 在 VS 2010 构建/发布设置中? 此外,在这些更新期
本人第一次发帖,如有错误请多多包涵。另外,这是我第一次广泛使用 jquery,所以再一次...不要打败我。 好吧,情况如下... 我有一个 WP 模板,它的 jquery 相当多(不是我的),我不想尝
我试图用鼠标在 Canvas 上画一个圆圈,但我的数学是错误的,我不知道如何修复它。我希望当您单击并拖动以形成圆圈时,圆圈的顶部(或底部)和圆圈的侧面与光标的十字准线对齐。 我有一个 fiddle s
大家好, 我确信我陷入了回调噩梦,试图从传递 {query} 的 Mongoos.count 获取简单值。我可以在回调中获取该值并在控制台中看到它正常,但是尝试将其从异步回调设置中取出来却让我感到困惑
box model应该很简单,但我就是不明白。 这是一个无意义的表格 Box model test Box 1 Box 2 及其 CSS body
背景:我正在研究 framework它基于现有的 Java 类模型生成 C++ 代码。因此,我无法更改下面提到的循环依赖。 给定: 父子类关系 父级包含子级列表 用户必须能够在运行时查找列表元素类型
F#一出来,我就要在异步/并行编程领域发财了。一个 answer to this question在描述 Tasks、Parallel LINQ 和 Reactive Framework 之间的差异方
我正在尝试了解 iPhone 操作系统上的 OpenGL 对象模型。我当前正在屏幕上渲染到几个不同的 UIView(基于 CAEAGLayer 构建)。我目前将其中每一个都使用单独的 EAGLCont
关于 Google map 、AJAX 和一些后端数据的快速问题。 我将如何创建使用我存储在数据库中的信息“实时”更新的谷歌地图? 我认为它在我脑海中运作的方式是。 数据库从用户那里收集带有地理标记的
简单地说,我正在尝试制作一款全屏游戏。 我尝试使用以下代码: GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironm
好的.....我已经完成了所有相关问题的阅读和一些 MSDN 文章,以及大约一天的谷歌搜索。 这个问题的当前“最先进”答案是什么: 我正在使用 VS 2008,C++ 非托管代码。我有一个包含很多 D
在开发内容管理系统时,我遇到了一些困难。回到我的数据模型,我注意到一些问题可能会随着时间的推移变得更加普遍。 即,我想维护用户记录修改的审计跟踪(更改日志)(甚至会记录用户记录修改)。由于包含任意数量
假设我有一个很大的对象列表(数千或数万),每个对象都带有一些标签。有数十或数百个可能的标签,它们的使用遵循典型的幂律:有些标签使用得非常频繁,但大多数很少见。事实上,除了最常见的几十个标签之外,所有标
和我一起回到三年前吧。我记得构建的 Web 控件通过 AJAX 动态插入到页面的 HTML 中,然后就地呈现。我们使用了 Prototype JavaScript 库和 XMLHTTP Request
这里很沮丧。我不是数据库管理员,但可以绕过。我正在针对 Progress OpenEdge 数据库编写一些 ODBC 查询,我们只能查看该数据库。很长一段时间以来都没有出现任何问题,直到最近他们更改了
我认为我面临着一种独特的情况,主要是因为我找不到任何可以帮助我解决这个问题的方法。我正在尝试在蒙版元素内添加视差效果。在元素可以......“视差?”之前......它必须滑入视野,在蒙面容器内。 在
您在 Rails 应用程序的 Selenium 测试中使用哪些数据?您是否从固定装置加载?使用现有的开发数据库?使用单独的(非 fixture )数据库? 我正在考虑我的选择。我有一个带有大型 Sel
我有一个 Ruby on Rails 项目(使用 git 进行版本控制),其中包含许多存在于各种公共(public) GitHub 存储库中的外部 JavaScript 依赖项。将这些依赖项包含在我的
我是一名优秀的程序员,十分优秀!