在计算中(解偏微分方程)往往要考虑边界条件,而边界上的值往往取跟某些点的值变化一样. 对于空间上某一点, 我设计了下列结构
[CODE]
typedef <class T>
struct Point
{
T u;
T v;
}
[/CODE]
为了可以在程序运行时区别普通点和边界点, 我又继承了Point
[CODE]
typedef <class T>
struct BPoint

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

oint<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]