我只是遇到了以下問題:不能調用基類的構造函數與括號初始化智能感知錯誤
#include "stdafx.h"
#include <string>
#include <iostream>
class transaction{
protected:
transaction(const std::string& log) { printLog(log); }
private:
void printLog(const std::string& log) const { std::cout << log << "\n"; }
};
class inTrans : public transaction {
public:
inTrans() : transaction(std::string("input")) { }
};
class outTrans : public transaction {
public:
outTrans() : transaction{ std::string("output") } { } //This doesn't work
};
的Visual Studio 2013,標誌着第一個「{」 - 紅色,並顯示以下錯誤:
"Error protected function "transaction::transaction(const std::string &log)" (declared at line 7) is not accessible through a "transaction" pointer or object."
事情是,我仍然能夠編譯文件,一切似乎都運行得很好。 那麼,爲什麼我會得到這個奇怪的錯誤?
是不是故意的,你使用()用於INTRANS和{}爲outTrans初始化列表?也許C++ 11支持初始化列表的一些{}幻想,我不知道。 – 2014-10-01 14:10:00
你的代碼可以用GCC編譯。也許在Visual Studio中有bug /缺少功能? – 5gon12eder 2014-10-01 14:11:58
gcc和clang可以正常工作。聽起來像一個錯誤。 「 – 2014-10-01 14:13:46