我想在C++中做一個洪泛算法,所以我的計劃是製作一個二維數組,然後每個項目都是一個對象,用屬性來檢查它周圍的牆。類中的C++ bitset錯誤
我注意到壁下面的方式, 1 =頂部 2 =右 4 = bottem 8 =左
所以13將意味着,頂部/ bottem /左壁
但是當我使用std::bitset<sizeof(int)> bits(w);
我得到一個「預期」;'之前 '(' 令牌 如何解決這個我試過很多東西,但它只是將無法正常工作
我的代碼:?
// een simpele floodfill
#include <stdlib.h>
#include <iostream>
#include <bitset>
class Hokjes {
int x;
int y;
int w;
public:
void setX(int i) { x = i; }
void setY(int i) { y = i; }
void setW(int i) { w = i; }
int getX() { return x; }
int getY() { return y; }
int getVal() { return x*y; }
std::bitset<sizeof(int)> bits(w); // error happens in this line
/* FreeSpace? */
bool Left() {
if (bits[3]) return false;
return true; }
bool Bottum() {
if (bits[2]) return false;
return true; }
bool Right() {
if (bits[1]) return false;
return true; }
bool Top() {
if (bits[0]) return false;
return true; }
};
int main() {
using namespace std;
int NrKamers;
std::cin >> NrKamers;
for (int i = 0; i<NrKamers; i++){
int SizeX;
int SizeY;
Hokjes veld[SizeY][SizeX];
std::cin >> SizeY >> SizeX;
for (int Yas = 0; Yas <= SizeY; Yas++){
for (int Xas = 0; Xas <= SizeX; Xas++){
veld[Yas][Xas].setW((Yas+1)*Xas)
veld[Yas][Xas].setX(Xas);
veld[Yas][Xas].setY(Yas);
std::cout << veld[Yas][Xas].Top() << std::endl;
}
}
std::cout << SizeY << " " << SizeX;
}
std::cout << NrKamers << std::endl;
system("pause");
return 0;
}
啊,非常感謝你! – Buster 2011-05-08 18:34:08
那麼構造函數中'w'的值是什麼? – 2011-05-08 19:20:14
因此,第一行只是在編譯時計算整數的位數,對不對?它實際上並不允許在類中聲明動態大小的位集? – bhekman 2012-12-03 04:36:32