2017-10-14 77 views
0

我已經看到過很多帖子,但它們似乎都是在定義spme類型的方法時尋址的。C++:非靜態成員引用必須與特定對象相關

應用程序的背景:試圖製作一個基本的數獨遊戲來獲取C++的竅門。

錯誤似乎與主要函數.cpp文件無關,所以我會忽略它,除非請求保持解釋簡短。

的board.h文件:

#pragma once 
class board 
{ 
public: 
    board(int gameSize, int diffifuclty) : gameSize(gameSize), difficulty(difficulty) {}; 
    ~board(); 

private: 
    int gameSize; int difficulty; 
    int game[gameSize][gameSize][gameSize][gameSize]; 
    void createRandom(); // Creates a random workable board. 
    void hasSolution(); // Checks if there's a solution from the current state. 

}; 

我沒有幻想過很多與board.cpp文件還沒有,因爲我只是忙着在board.h文件中定義的一切規劃出哪些功能我想寫。

無論如何,我想有一個遊戲板gameSizedifficulty被輸入控制檯。當我嘗試構建遊戲板的多維數組時,我遇到了標題中提到的錯誤。 (所以在數獨遊戲中,9x9遊戲的遊戲大小爲3)

我不確定錯誤是什麼或者如何使這個數組成爲一個屬性(我不確定這是C++術語,所以對不起)的董事會?

+0

你的陣列不能使用成員變量的大小。它們必須在編譯時可用。因此,要麼使用矢量 >>>,要麼使用帶有翻譯函數的gamesize^4矢量,請使用int ****或將其作爲模板參數傳遞。 – Beached

回答

0

您遇到的問題是使用C++的典型OOP問題。你可以找到更多解釋here

這是因爲您在引用任何類的成員之前沒有先創建對象。

例如,

construct(game); // game is a member of class board. you need to create an object of board first. 

這裏是正確的

board bd; 
construct(bd.game); 
+0

好的,這是我感到困惑的地方,因爲我猜測C++在這方面與其他語言不同。首先,這段代碼是否進入我的'main',board.h文件或board.cpp文件?其次,如何根據我的課程要求製作多維數組?在其他語言中,做類似的事情不會給我一個問題,因爲我只是使用一個屬性。那麼這裏有什麼不同? –

+0

就我所知,Java,C#等有關於'static'的相同概念。 C++與他們沒有什麼不同。通常board.cpp是實現類板。板類的實例化在其他地方完成。 –

相關問題