我的功能是
void BookRecord::getCost(double *c)
{
}
我应该将成员变量(double m_dCost)复制到函数指向的变量中。但是当我这样做的时候......
void BookRecord::getCost(double *c)
{
c = m_dCost;
}
我的编译器告诉我"类型为' double'不能分配给' double *'类型的实体。"那为什么不呢?如果我不能这样做,我如何将成员变量复制到其中?
感谢任何和所有帮助。非常感谢!
编辑:对于那些说我没有看过任何东西的人,让我宣布一下我对C ++和编程的新手。也许我不太明白为什么双m_dCost和double * c是如此不同。
答案 0 :(得分:5)
你应该试试这个:
*c = m_dCost;
double
和double *
是不同的类型,您无法直接指定它们。您需要在此处使用取消引用(间接)运算符 *
。
答案 1 :(得分:3)
“c”是指向双变量的指针,但是,“m_dCost”是一个双变量,你应该使用“*”运算符来引用“c”指向的变量。
就像songyuanyao的解决方案:
*c = m_dCost;
答案 2 :(得分:1)
c = m_dCost;
这是一个无效的陈述......
c = &m_dcost;
有效...这里c存储m_dcost的内存地址......
*c = m_dcost;
也有效...它指向其内存地址存储在c。
中的变量答案 3 :(得分:0)
在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
}