为什么我无法将"type 'double'"设置为实体"type 'double *'?"

Why can't I set "type 'double'" to entity "type 'double *'?"

本文关键字:type double 实体 设置 为什么      更新时间:2023-10-16

我的功能是

void BookRecord::getCost(double *c)
 {
 }

我应该将一个成员变量(double m_dCost)复制到函数指向的变量中。但当我这样做的时候。。。

void BookRecord::getCost(double *c)
 {
   c = m_dCost;
 }

我的编译器告诉我"不能将'double'类型的值分配给'double*'类型的实体。"为什么不呢?如果我不能这样做,我该如何将成员变量复制到其中?

感谢您的任何帮助。非常感谢!

编辑:对于那些说我什么都没查过的人,让我宣布我是C++和编程的新手。也许我不太明白为什么双m_dCost和双*c如此不同。

你应该试试这个:

*c =  m_dCost;

doubledouble *是不同的类型,不能直接分配。您需要在此处使用取消引用(间接)运算符*

引用:取消引用运算符

"c"是指向双变量的指针,但是,"m_dCost"是双变量,您应该使用"*"运算符来引用"c"指向的变量。

就像宋元耀的解决方案:

*c =  m_dCost;
c =  m_dCost;

这是一个无效的陈述。。。

c = &m_dcost;    

有效。这里,c存储m_dcost的存储器地址。

*c = m_dcost;     

也是有效的。它指向存储地址存储在c中的变量。

在C和C++中,double和double*是不同的类型。double表示双精度浮点,但后面跟着星号的任何类型都是它自己的类型,表示指向typename的指针。所以,double*只包含double变量的地址,而不包含变量本身。

如果您要做的是将m_dCost复制到c中,请执行以下操作:

void BookRecord::getCost(double *c)
{
    *c = m_dCost; // variable that c points to <- m_dCost
}

但我注意到你的问题是用C++标记的。如果您使用C++,那么您应该只创建一个类,并且该类应该隐藏指针。

public class BookRecord
{
   public:
   BookRecord();
   double getCost();
   private:
   double _cost;
}
double BookRecord::getCost()
{
   return _cost; // Your function returns void and the "return value" is stored through a pointer
                 // Use a return statement instead for simplicity
}