該代碼被寫入以實現具有一些常用功能的Bit類。C++代碼錯誤
#include <iostream>
#include <math.h>
using namespace std;
class Bit
{
int width;
int value;
public:
Bit(int v, int w)
{
value=v;
width=w;
}
Bit(const Bit& b)
{
value= b.value;
width= b.width;
}
int getWidth()
{
return width;
}
int getValue()
{
return value;
}
Bit plus(int newval)
{
value+=newval;
if(value>=pow(2,width))
cout<<"Overflow";
return this;
}
};
的錯誤信息是:
Conversion from 'Bit* const' to non-scalar type 'Bit' requested.
我怎麼能刪除錯誤?
如果我將構造函數更改爲'Bit(Bit b) { value = b.value; width = b.width; } '爲什麼這裏錯了,但它在java中完美工作。 – 2012-02-17 14:02:47
複製構造函數必須通過引用採用其參數;爲了按值傳遞它,你需要拷貝構造函數來創建值 - 這是不可能的,因爲這是*拷貝構造函數。在Java中,參數是一個參考 - 你不能通過值傳遞類類型。在C++中,你必須聲明它是一個引用,'Bit(Bit const&b)'。 – 2012-02-17 14:08:15