|
|
1
2
这是一个约束函数模板的技巧——约束类型的类。有很多概念,如向量表达式、标量表达式、矩阵表达式等。如果您想编写一个函数模板,将向量与标量相乘,您可以尝试编写
但这是行不通的,因为两个声明本质上是等价的,没有人说V应该是向量表达式,S应该是标量表达式。因此,uBlas开发人员所做的是使用CRTP来约束这些模板:
为了实现这一点,所有标量表达式都必须从中派生
现在,为了能够访问V和S(派生类型)中的任何内容,我们需要一个从基类到派生类的转换。这就是基类中的转换运算符的作用。因为基类知道派生类(它是一个模板参数),所以这不是问题。选择最弱的cast操作符可以避免错误。这就是
我不明白你想用你的代码做什么
如果您想编写自己的向量表达式作为模板,您可以这样做:
|
|
|
2
1
您所指的可访问性错误没有意义。
解决你的问题可能比你想象的还要简单。如果您仔细查看ublas源代码,就会发现
这意味着
试着重写
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |