![]() |
1
4
然而,对我来说,这似乎是一个没有问题的理由去经历所有的麻烦。 |
![]() |
2
4
如果你有一个指向矩阵的指针,例如作为一个你不能引用的函数参数(传统代码,例如),你仍然可以引用它(伪代码):
|
![]() |
3
2
你基本上只限于
或者,将指针设为私有并设为访问器(注意:下面的示例假设一个entrytypes矩阵):
或者,如果无法更改类顶点,只需定义一个内联函数来为您执行此操作:
最后,不要忘记你没有
有
使用运算符重载。STL集合实现一个at()成员函数,该函数被选中,而不是未选中的运算符[]。如果您不介意边界检查的开销,或者您只是想成为非标准的,那么可以实现at(),然后调用
|
![]() |
4
1
没有C++句法糖会减轻你所描述的痛苦:
在这种情况下,我要么让图形返回引用而不是指针,要么让矩阵定义一个调用operator()的函数:
那么,对于顶点示例,语法就不那么难看了:
|
![]() |
5
1
我将添加一个函数,它返回一个像rlbond建议的引用。为了快速解决问题,或者如果您无法控制其来源,我将使用以下方法:
这实际上是等价的,因为下面的假设
见 this 关于comp.lang.c++关于同一个问题的长时间讨论,有很好的答案。 |
![]() |
6
0
这是不更改代码的最佳方法:
您也可以将some2dtable作为对矩阵的引用,而不是指向矩阵的指针。然后,您将得到和第一个代码截图一样的简化语法。
或者,您可以让some2dtable保留一个指向引用的指针,并简单地存储一个引用变量,然后在代码块的上下文中使用它。 |
![]() |
7
0
我将更改获取“samplevertex.some2dtable”的方式,以便它返回引用。 或者自己创建引用:
|
![]() |
8
0
我不知道这是否值得麻烦,但你可以这样做:
提供原件
然后在顶点类中提供MatrixAccessor:
然后你可以写:
编辑
我补充说
这个解的一个优点是,通过添加两个非-
当使用到矩阵对象的公共指针时,这是不可能的。 |
![]() |
9
0
可以通过调用成员函数来实现matrix::operator(int,int),并在处理指针时直接使用该函数。
|
![]() |
Karpov · 巨大的广播变量,没有parfor优化代码? 6 年前 |
![]() |
Shika93 · Matlab元素位置 6 年前 |
![]() |
nymuffin · 在R中创建非对称对角线为0s的1s非对称矩阵 6 年前 |
![]() |
Jakub Wagner · 厄米矩阵的特征向量[闭] 6 年前 |
![]() |
yankeefan11 · 网格每个点处的矩阵 6 年前 |
![]() |
Patrick · 将字母向量拆分为大小相等的向量[重复] 6 年前 |