gpt4 book ai didi

c++ - 应该如何使用静态/非静态函数?

转载 作者:行者123 更新时间:2023-11-27 23:14:20 24 4
gpt4 key购买 nike

我有一个简单的类,它处理 3D vector 。我有一个 print 方法和一个 get_coo (它返回一个 vector 的坐标)。我希望这些 funkctions 是静态方法,所以我可以将它们与 vector 一起使用。但我总是出错: 非静态成员引用必须相对于特定对象

标题:

#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;
}

最佳答案

由于 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;
}
}

关于c++ - 应该如何使用静态/非静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com