我有一个简单的类,它处理3D矢量。我有一个打印方法和一个get_coo(它返回一个矢量的坐标)。我希望这些函数是静态方法,所以我可以通常使用它们与矢量。但是,我总是得到错误: 的非静态成员引用必须是相对于特定对象应该如何使用静态/非静态函数?
页眉:
#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;
}
这是匈牙利语吗?也许你应该使用匈牙利符号以及... ;-) –
花点时间,拼出函数名称。对构建过程的影响可以忽略不计,并且不会添加任何额外的代码。但是,它确实会使您的代码更易于读取,并使其他人(例如读取器或Stack Oveflow)更易读。 –
为什么你想要的功能是静态的? – Oktalist