[英]Netbeans: C++ Successful Build, Run Failed
更新/解决方案:这似乎是 Netbeans 的问题,而不是我的代码。 我从 NetBeans 切换到 CodeBlocks 并使用另一个编译器,它可以工作。
我目前正在尝试用 C++ 编写我自己的 Vector 类。 为此,我仍在使用内置向量,但我想定义自己的运算符。 我的问题是构建我的项目有效( “构建成功” ),但是当我尝试运行我的项目时,它只是在控制台中显示“运行失败” 。 我不知道是什么导致了这个错误,互联网还没有提供解决方案。 我在 Windows 10 上使用 NetBeans Apache。这是我的代码:
向量.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 */
矢量.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;
}
主程序
#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;
}
感谢您的帮助 :)
我无法使用 NetBeans 解决问题,但切换到另一个 IDE 和编译器(在我的例子中是 CodeBlocks)有所帮助,现在代码可以无缝运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.