我有一个简单的类,它处理3D矢量。我有一个print方法和一个get_coo(以向量的坐标返回)。我希望这些funkctions是静态方法,所以我可以通常使用它们向量。但我总是有错误: 非静态成员引用必须相对于特定对象
部首:
#include "stdafx.h"
#ifndef my_VECTOR_H
#define my_VECTOR_H
class my_vector{
private:
double a,b,c; //a vektor három iránya
public:
my_vector(double a, double b, double c); //konstruktor
static double get_coo(const my_vector& v, unsigned int k); //koordináták kinyerése, 1-2-3 értékre a-b vagy c koordinátát adja vissza
void add_vector(const my_vector& v);//összeadás
static void print_vector(const my_vector& v);
};
#endif
实现:
#include "stdafx.h"
#include "my_Vector.h"
#include <iostream>
my_vector::my_vector(double a = 100, double b= 100, double c= 100):a(a),b(b),c(c){
//default contstructor
}
void my_vector::add_vector(const my_vector& v){
double v_a = get_coo(v, 1),
v_b = get_coo(v, 2),
v_c = get_coo(v, 3);
a+=v_a;
b+=v_b;
c+=v_c;
}
double my_vector::get_coo(const my_vector& v, unsigned int k){
switch(k){
case 1:
return a; //here are the errors
case 2:
return b;
case 3:
return c;
}
}
void my_vector::print_vector(const my_vector& v){
std::cout << get_coo(v, 1) << std::endl;
std::cout << get_coo(v, 2) << std::endl;
std::cout << get_coo(v, 3) << std::endl;
}
答案 0 :(得分:4)
由于get_coo是静态的,因此没有对象可以操作,并且您无法使用对象或指向对象的限定条件来访问非静态成员。尝试:
double my_vector::get_coo(const my_vector& v, unsigned int k){
switch(k){
case 1:
return v.a; //here are the errors
case 2:
return v.b;
case 3:
return v.c;
}
}