发新话题
打印

一个计算中涉及到的问题

一个计算中涉及到的问题

在计算中(解偏微分方程)往往要考虑边界条件,而边界上的值往往取跟某些点的值变化一样. 对于空间上某一点, 我设计了下列结构

[CODE]
typedef <class T>
struct Point
{
  T u;
  T v;
}
[/CODE]

为了可以在程序运行时区别普通点和边界点, 我又继承了Point
[CODE]
typedef <class T>
struct BPointoint<T>
{
}
[/CODE]

这样就得到两种点了. 但是, 在计算时要处理边界条件, 例如, 每计算一步都要将边界点上的值用它的邻近点的值来赋值, 如果问题规模大,这样也是很耗时的。我想能否把BPoint中的变量设为指针,并指向某个邻近点,这样就不用每次去更新它了。

[CODE]
typedef <class T>
struct BPointoint<T*>
{
}
[/CODE]

上述的代码是合法的,我可以预先将所有BPoint中相应的u, v指向适当的地方。但是这样改变以后,我要引用BPoint中的值时就不能用"."操作符了,这样又破坏了算法的一致性。有没有办法可以既使BPoint指向某个点,同时又可以继续使用"."来作数据引用?例如



[CODE]
  Point<int> p;
  BPoint<int> bp;

  p.u = 100; p.v=200;
  // 这里 bp.u 指向 p.u , bp.v 指向p.v, 即bp.u=100, bp.v=200
  // 但要引用bp中的值, 只能写作*bp.u, *bp.v, 能否用bp.u和bp.v来引来?
[/CODE]      

TOP

这种东西用的到模板么?      
-----------------------------------------
http://www.darkspy.org/blog

自大的人把宗教当迷信,无知的人把迷信当宗教

TOP

看看你能不能重载运算符 .

不过最好还是不要用这种表达方式,这样的代码几乎无法阅读

考虑一下可以用 union 的方式吗?      

TOP

发新话题