为什么我无法将"type 'double'"设置为实体"type 'double *'?"
Why can't I set "type 'double'" to entity "type 'double *'?"
我的功能是
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;
double
和double *
是不同的类型,不能直接分配。您需要在此处使用取消引用(间接)运算符*
。
引用:取消引用运算符
"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
}
相关文章:
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- C++在数学计算中将double转换为int
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 在c++中为double类型的数组创建一个unique_ptr
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- vector<vector<double>> to mxArray using memcpy
- (double) 和 double() 之间的区别
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- C++ Version Of Double.longBitsToDouble
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 将系数存储在头文件的数组中("does not name a type"错误)
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 尝试打开 ifstream 时出现"Incomplete type"错误
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在"结构提升::enable_if<提升::is_pod<T>,无效>"中没有名为"type"的类型
- 为什么我无法将"type 'double'"设置为实体"type 'double *'?"
- 如何轻松初始化'double data type'为 -1 或 0 的第二个数组元素