小编Bra*_*iub的帖子

解决这种多态性问题的最优雅方式

编辑:我正在使用C++.

所以,我正在创建方法/函数来测试形状之间的交集.我基本上有这个:

class Shape {};

class Rectangle : public Shape {};

class Circle : public Shape {};

class Line : public Shape {};
Run Code Online (Sandbox Code Playgroud)

现在,我需要决定编写实际方法/函数来测试交集的最佳方法.但是我的所有形状都将存储在Shape指针列表中,因此我将调用基本形式的方法/函数:

bool intersects (Shape* a, Shape* b);
Run Code Online (Sandbox Code Playgroud)

那时,我需要确定哪种类型的形状'a'和'b',所以我可以正确地检测碰撞.我只需使用一些虚拟方法就可以轻松完成其中一个:

class Shape
{
    virtual bool intersects (Shape* b) = 0;
}
Run Code Online (Sandbox Code Playgroud)

这将确定其中一个形状('a'现在是'this').但是,我仍然需要获得'b'的类型.显而易见的解决方案是给Shape一个'id'变量来分类它是什么形状,然后'切换'通过那些,然后使用dynamic_cast.然而,这不是很优雅,感觉应该有更多的OO方式来做到这一点.

有什么建议?

c++ polymorphism

8
推荐指数
1
解决办法
891
查看次数

Java使用字符串作为代码

好的,这就是我在代码中所拥有的:

public void makeObject(int i){
    String s = getString(i); //This returns the name of a class
    new s(); //This is what I want to do
}
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?

java

1
推荐指数
1
解决办法
129
查看次数

LLVM与Haskell,奇怪的链接器错误

我刚刚成功安装了LLVM(3.0),并获得了Hackage绑定(3.0.0.0).但是,当我尝试使用它时,我收到以下链接器错误:

加载包llvm-base-3.0.0.0 ...无法加载.so/.DLL :( dlopen(lib.dylib,9):找不到图像)

"for:"之后没有名字,这令人沮丧,因为我不知道它找不到什么.我知道没有太多信息可以继续,但是有谁知道为什么会发生这种情况?

我正在运行Mac OS X,以防万一.

macos dll linker haskell llvm

1
推荐指数
1
解决办法
204
查看次数

标签 统计

c++ ×1

dll ×1

haskell ×1

java ×1

linker ×1

llvm ×1

macos ×1

polymorphism ×1