我有一個簡單的類,它處理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