У меня неоднократно возникала эта проблема в моем коде (и теперь я думаю, что ее невозможно обойти): по какой-то причине, когда я пытаюсь написать метод, который возвращает std::vector<long double>
, и пытаюсь перегрузить его с тем же именем метода, что и возвращает другой std::vector
, скажем, std::vector<std::complex<long double> >
, я получаю сообщение об ошибке, похожее на: std::vector<std::vector<long double> > cannot be overloaded with std::vector<long double>
, хотя я включил необходимые классы #include. Почему это?? Есть ли в этом какое-то обоснование??
Вот код, имитирующий проблему:
#ifndef MATRIXALGORITHMS_H
#define MATRIXALGORITHMS_H
#include <complex>
#include <vector>
class MatrixAlgorithms
{
public:
MatrixAlgorithms();
//two algorithms that are not strictly for matrices; they are for solving quadratic and cubic polynomials
//quadratic method; the roots might be real, so there should be two versions of this algorithm
std::vector<long double> quadraticFormula(long double, long double, long double);
std::vector<std::complex<long double> > quadraticFormula(long double, long double, long double);
protected:
private:
};
#endif // MATRIXALGORITHMS_H
Я попытался скомпилировать его, и он дал мне вышеупомянутую ошибку....