超载操作员 仅适用于类的特定情况
overload operator+ only for specific case of the class
我有一个class matrix
,我想在其中超载+
运算符,但只有两个矩阵都具有相同数量的行和列。
class matrix
{
private:
int rows, columns;
double* data;
public:
//things here: constructor, destructor etc.
matrix operator+ (const matrix&) const;
};
然后,我只想在行相同数量的行和列时添加两个矩阵。我现在正在做的是:
matrix matrix::operator+(const matrix& adder) const
{
if(rows == adder.rows() && columns == adder.columns())
{
matrix temporal;
//Perform the addition
return temporal;
}
else
std::cout << "Unable to add matrices" << std::endl;
//return an empty matrix of 0 rows, 0 columns.
}
我的问题是我能够以这种方式"添加"任意两个矩阵。有什么办法只能在矩阵相等的情况下超载操作员(当我尝试编译两个无法添加的矩阵时,会出现错误)?
)?我只想创建一个带有正数的行和列的矩阵时,使用参数化的构造器也存在相同的问题。到目前为止,我要做的就是用两个整数声明构造函数,在情况下,我会发现整数输入只需创建一个空矩阵即可。这会导致同样的问题,因为我可以"创建"一个带负行的矩阵,但是直到我稍后再使用矩阵之前,我才发现。
有什么办法只能在矩阵相等大小的情况下超载操作员(当我尝试编译两个无法添加的矩阵时,会出现错误)?
)?
无法为运行时错误生成编译时间错误。
,如果您愿意在编译时知道矩阵的dimenstions,则可以生成编译时错误。这可以使用
来实现template <size_t NUM_ROWS, size_t NUM_COLUMNS>
class matrix
{
...
};
您必须弄清楚这是否需要您的要求。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 函数中堆分配的效果与缺少堆分配的情况
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 在这种情况下是私有的吗?试图使操作员<<过载
- 如何在没有包含朋友的情况下使用过载操作员
- 如何在不使用C 中使用新操作员的情况下创建对象
- 超载操作员 仅适用于类的特定情况
- 如何在不使用提取操作员的情况下计算TXT文件中的数量数
- 在操作员过载的情况下处理悬空指针/参考
- 视觉上的一元操作员在C 中超载特殊情况
- 我可以在没有流对象的情况下调用流操作员的过载
- 在这种情况下,哪个操作员被调用