【发布时间】:2014-01-22 19:20:25
【问题描述】:
所以我一直在使用球拍网站上的教程 (http://docs.racket-lang.org/inside/overview.html) 为一些 C++ 类编写一些球拍扩展,并且能够成功地将它们加载到球拍中。但是我想知道是否可以使用继承来重用一些代码。
例如,我有两个用 C++ 编写的类,Foo 和 Bar。
Foo 类看起来像这样:
Foo {
func1() { /* ... do stuff */ }
}
类栏看起来像这样:
Bar : Foo {
func2() { /*... do more stuff /*}
}
我目前编写了一个 .cpp 球拍扩展,它创建 Bar 并为 func1() 和 func2() 创建扩展;但是,我想创建两个球拍扩展类。一个仅在 Foo 内部起作用的扩展,然后我只想在 Bar_ext.h 中包含 Foo_ext.h(我对 Foo 的球拍扩展),这样我就可以访问所有功能。
所以我目前有这个:
Bar_ext.cpp:
func1_racket_ext() { /*... do racket stuff and run func1() */}
func2_racket_ext() {/* ... do more racket stuff and run func2() /*}
/* Scheme initializes etc... */
但我真正想要的是:
Foo_ext.h:
func1_racket_ext() { /*... do racket stuff and run func1() */}
/* Scheme initializes etc... */
Bar_ext.cpp:
#include "Foo_ext.h"
func2_racket_ext() {/* ... do more racket stuff and run func2() /*}
/* Scheme initializes etc... */
这甚至可能吗?我觉得命名空间可能是一个问题。这对我来说非常有用,因为它允许我不编写大量冗余代码,因为我有许多使用类 Foo 作为超类的类。
任何建议都将不胜感激,如果你能指出一个例子(也许底层球拍代码中有一些东西你可以指出我?)
【问题讨论】:
标签: c++ inheritance scheme racket