gpt4 book ai didi

C++抛出异常非法

转载 作者:行者123 更新时间:2023-11-28 05:53:06 24 4
gpt4 key购买 nike

出现错误:非法使用此类型名这是 operator+ 重载:

    template<class T>
inline Vec<T> Vec<T>::operator+(const Vec& rhs) const
{
int vecSize = 0;
if (rhs.size() == 0 || size() == 0) {
throw ExceptionEmptyOperand;
}
if (rhs.size() != size()) {
throw ExceptionWrongDimensions;
}
else
{
Vec<T> vec;
vecSize = rhs.size();
for (int i = 0; i < vecSize;i++) {
vec.push(*this[i] + rhs[i])
}

return vec;
}

这是 operator[] 重载的声明:

  T& operator[](unsigned int ind);
const T& operator[](unsigned int ind) const;

第一个是为了能够改变 vector 值。

这是我尝试做的,但出现了上述错误:

template<class T>
inline T& Vec<T>::operator[](unsigned int ind)
{
list<T>::iterator it = vals_.begin();
if (size() == 0) {
throw ExceptionEmptyOperand;
}
if (size() < ind) {
throw ExceptionIndexExceed;
}


for (unsigned int i = 0; i<ind; i++) {
++it;
}
return *it;
}

它给我这个错误:ExceptionEmptyOperand illegal use this type as an expression

最佳答案

如果您有类型 ExceptionEmptyOperand,则 throw ExceptionEmptyOperand; 是无效语法。您需要创建一个该类型的对象,然后将其抛出:

throw ExceptionEmptyOperand();

// or
ExceptionEmptyOperand e;
throw e;

关于C++抛出异常非法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com