ОБНОВЛЕНИЕ / РЕШЕНИЕ: Кажется, это проблема Netbeans, а не моего кода. Я переключил форму NetBeans на CodeBlocks и использую другой компилятор, и он работает.
Я сейчас пытаюсь написать свой собственный класс Vector на c ++. Для этого я все еще использую встроенный вектор, но я хочу определить свои собственные операторы. Моя проблема в том, что сборка моего проекта работает ( "Сборка успешна" ), но когда я пытаюсь запустить свой проект, он просто говорит "Выполнить не удалось" в консоли. Я понятия не имею, что может быть причиной этой ошибки, и inte rnet еще не предоставил решение. Я использую NetBeans Apache на Windows 10. Вот мой код:
Vector.hh
#ifndef VECTOR_HH
#define VECTOR_HH
#include <vector>
using namespace std;
class Vector{
public:
Vector();
~Vector();
Vector(const Vector&);
Vector(int d, double v);
Vector(int d);
Vector& operator=(const Vector&);
double& operator[](const int);
double operator[](const int) const;
Vector& operator+(const Vector&);
Vector& operator-(const Vector&);
Vector& operator*(const double);
double operator*(const Vector&);
double norm();
friend Vector& operator*(const double, Vector& v);
private:
int dimension;
vector<double>* values;
};
#endif /* VECTOR_HH */
Vector. cc
#include "Vector.hh"
#include <math.h>
#include <vector>
using namespace std;
Vector::Vector():dimension(0){
values = new vector<double>();
}
Vector::~Vector(){
dimension = 0;
delete values;
}
Vector::Vector(const Vector& v):dimension(v.dimension){
values = new vector<double>();
for(int i = 0; i < dimension; i++){
values->push_back(v[i]);
}
}
Vector::Vector(int d, double v):dimension(d){
values = new vector<double>();
values->assign(dimension, v);
}
Vector::Vector(int d):dimension(d){
values = new vector<double>();
values->assign(dimension, 0);
}
Vector& Vector::operator=(const Vector& v){
dimension = v.dimension;
delete values;
values = new vector<double>();
for(int i = 0; i < dimension; i++){
values->push_back(v[i]);
}
return *this;
}
Vector& Vector::operator*(double s){
Vector* v = new Vector(dimension);
for(int i = 0; i < dimension; i++){
(*v)[i] = s * values->at(i);
}
return *v;
}
double& Vector::operator[](const int i){
return values->at(i);
}
double Vector::operator[](const int i) const{
return values->at(i);
}
Vector& Vector::operator+(const Vector& v){
Vector* u = new Vector(dimension);
for(int i = 0; i < dimension; i++){
(*u)[i] = v[i] + values->at(i);
}
return *u;
}
Vector& Vector::operator-(const Vector& v){
Vector* u = new Vector(dimension);
for(int i = 0; i < dimension; i++){
(*u)[i] = v[i] - values->at(i);
}
return *u;
}
double Vector::operator*(const Vector& v){
double d = 0;
if(v.dimension != dimension) return 0;
for(int i = 0; i < dimension; i++){
d = d + v[i] * values->at(i);
}
return d;
}
double Vector::norm(){
double d = (*this) * (*this);
return sqrt(d);
}
Vector& operator*(const double s, Vector& v){
return v * s;
}
Main. cpp
#include <cstdlib>
#include "Vector.hh"
#include <iostream>
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
std::cout << "Hello there";
Vector v(2);
v[0] = 3;
v[1] = -4;
Vector u(2);
return 0;
}
Спасибо за помощь:)