我如何跟踪外部类的浮动?

时间:2011-01-29 06:56:55

标签: c++ class

假设我在main中引用了一个类,它接受一个像这样的浮点数:

class SomeClass {
     SomeClass(float a) {

     }

     int someMethodDoingSomethingWith_a() {
          // perform something on _a
     }

     float _a;
}

在我的主要课程中,我将使用浮点值构造这个SomeClass,浮点值将在整个过程中不断变化。

每当我在SomeClass中执行某些方法时,它将使用它的float _a,但我希望它是更新的float(无论它当前在main中)。

你会推荐我做什么,使用指针?请建议我能做些什么。

2 个答案:

答案 0 :(得分:3)

以下是Nawaz的不同代码。这是更安全的做法。

class SomeClass {
public:
     SomeClass(float a) {

     }

     int someMethodDoingSomethingWith_a() {
          // perform something on _a
     }

     float  get_a()
     {
            return _a;
     }
     void set_a(float f)
     {
           _a=f;
     }
private:
     float _a;// _a is not reference anymore!!!!!!
}

int main()
{
    SomeClass S(5.7);

    //Now you can get and set a's value with get_a and set a
    S.set_a(7.1);

    return 0;
}

为了显示与Nawaz解决方案的不同,让我们考虑以下代码,假设我们在课堂上存储引用为Nawaz。

std::shared_ptr<SomeClass> somefunction()
{
    float x =7;
    return std::shared_ptr<SomeClass>(new SomeClass(x));
}

此函数将返回指向函数的指针,该函数将引用已从内存中删除的内容。

以下是此类代码的另一个问题:

SomeClass A(25); // A._a is referring to garbage.

答案 1 :(得分:0)

然后将其定义为:

class SomeClass {
     SomeClass(float & a) : _a (a) {

     }
     //....

     float &  _a;
}
int main()
{
      float x;
      SomeClass inst(x);
}

现在,如果您更改x中的main(),则_a中的SomeClass会相应更新。但请注意,此自动更改仅会反映在inst的{​​{1}}个实例中。