什么传递给这个功能?

时间:2010-08-26 20:13:56

标签: c++ pointers parameters reference

我有以下问题:

//A.h

class A
{
  //...
  // this is the important part, i have to call this in the proper way
  // in A::SetNewValue(), but i don't know how to do that
  protected:
    void SetValue(const int* i);
  //...

  public:
    // ??
    void SetNewValue(const int* p);
}

cpp:

//A.cpp
//??
A::SetNewValue(const int* p)
{
  // ??
  this->SetValue(&p);    
}

和...

//...
// and later in another file...
//...
A a = new A();

int a_value = 4;
int* p;
p=&value;

// ??
a->SetNewValue(p);

问题解释: A类是框架中的内置类。我没办法将受保护的A :: SetValue()修改为public,而我无法从“outside”到达它。所以我决定编写另一个函数A :: SetNewValue()来调用A :: SetValue,但我不知道如何在函数参数中传递指针和引用。我总是得到错误:不能从*转换为&,const *转换为*,依此类推......

我怎样才能以正确的方式做到这一点?这甚至可能吗?

非常感谢您的努力和帮助。

编辑:上面的代码是一个示例..我尝试过以多种方式传递参数

1 个答案:

答案 0 :(得分:1)

SetValue采用与SetNewValue类似的指针,因此您可以直接传递指针值:

void A::SetNewValue(const int* p)
{
    SetValue(p);    
}

我还修复了函数定义中缺少的void返回类型。

您应该可以使用指向intconst int的指针来调用它,因为在传递指针时,您始终可以在顶层添加 const

A a;

int a_value = 4;

a.SetNewValue(&a_value);

我将您的a变量修改为默认构造;我认为尝试使用指向a(来自A)的指针初始化非指针new A可能是一个错误。

我将->更改为.,因为a不是指针。