C++ 类的公共成员值未更改

C++ 类的公共成员值未更改,c++,class,setter,C++,Class,Setter,我有一个叫做Turns的类,它的所有成员都是公开的。直到现在,我还没有编辑这个类的成员的值,但是我已经毫无问题地在其他标题中更改了其他类的值。问题是,现在我想更改一个值,无论我如何尝试,它似乎都不起作用 转身 #ifndef TURNS_H #define TURNS_H #include "Constants.h" using namespace Constants; #include <string> using namespace std; #include "utili

我有一个叫做Turns的类,它的所有成员都是公开的。直到现在,我还没有编辑这个类的成员的值,但是我已经毫无问题地在其他标题中更改了其他类的值。问题是,现在我想更改一个值,无论我如何尝试,它似乎都不起作用

转身

#ifndef TURNS_H
#define TURNS_H

#include "Constants.h"
using namespace Constants;

#include <string>
using namespace std;

#include "utilities.h"

class Turns
{
public: 
    Turns();
    void insertk(double val, int i);

    int k[5]; // K denotes the fixed radius for R turns
    double K[4];
    string TPT; // F for fly-by turns. R for fix turns.
    int headings[5]; // Measured from Arrival Airport Threshold
    static const int hdgSIZE=5;
    double thr2wpt[4]; // Measured from Arrival Airport Threshold
    int phi_max[4];
    double turnrate_max[4];
    double scale;
    double Deltachig[4]; // Angle changed
    double phi_end[4]; // Estimated phi at the end of the turn
    double turnrate[4];
    int iend[4]; // Starting distance
};

#endif
如果我尝试直接替换由于成员是公共成员而应起作用的值,则结果相同:

tns->k[0]=0.00023
PS:我知道成员应该受到保护,但我读了很多,我想知道为什么k的值没有改变。

好吧,你的k数组被声明为一个整数数组。如果将0.00023指定给整数,则该整数将被舍入并截断为0。因此,这看起来好像k[0]的值没有改变。最初是零,分配后仍然是零。然而,任务已经完成


为什么要将0.00023赋值给整数?你不是应该使用你的K数组吗,它被声明为一个双精度数组?在任何情况下,在类中使用两个不同的数据成员k和k都不是一个好主意,除非您有非常令人信服的理由这样命名它们。

如何确定它是否已更改?我在你的代码中没有看到它。你有一个名为k的整数数组和一个名为k的双精度数组。你不混合这两个吗?我是在编程环境中执行时读的。但它并没有改变,因为在setter之后,我有一个k[0]的除法,而且它不能被除法,因为它是一个0的除法,0是初始值,不是四舍五入,而是被截断。是的,我的错误。k应该是双精度的。大人。。。无论如何,谢谢你。
Turns * tns;
tns=new Turns();
tns->insertk(0.00023, 0);
tns->k[0]=0.00023