我一直在尋找相當長的一段時間,在我的情況下找不到任何人。對不起,如果這是重複的。錯誤C2512:沒有適當的默認構造函數可用 - 爲什麼如果屬性正在構造函數中初始化?
我有一個Game類,在Game.h定義:
class Game
{
public:
Game(int argc, char **argv);
~Game();
private:
Logger logger;
Stage stage;
Engine engine;
};
然後在Game.cpp:
Game::Game(int argc, char **argv)
{
// Some code removed for clarity. Consider filename and bitsPerPixel
// already defined.
string fileName;
if (argc != 2){
fileName = defaultYAMLFilename;
logger.logBadParam(argc, fileName);
} else {
fileName = argv[1];
}
logger = Logger();
stage = Stage(fileName);
engine = Engine(stage.getWidthPx(), stage.getHeightPx(), bitsPerPixel, stage.getTimeStep());
}
然後我得到這個錯誤:
game.cpp (7):錯誤C2512:'WormsModel :: Stage':沒有適當的默認構造函數可用
game.cpp(7):錯誤C2512:'E ngine':沒有適當的默認構造函數可用
爲什麼如果屬性正在構造函數中初始化?
好的,我理解Chris關於初始化列表的評論。我怎麼能設法評估argc和所有初始化階段?
這些是分配,而不是初始化。使用構造函數初始值設定項列表。 – chris