3
我目前工作的一個類層次結構,其中從A
類B
繼承和使用的C++的功能,它允許直接通過鍵入繼承構造函數:有沒有辦法在繼承構造函數時訪問初始化列表?
using A::A;
而複製現有的所有構造函數。有什麼方法可以初始化類B
的類屬性,否則它將被初始化列表初始化?
的類層次結構如下所示,在不使用構造繼承和精細編譯:
class A
{
public:
A (int a)
{}
};
class B
:
public A
{
public:
B (int a)
:
A(a),
blubb(a)
{}
float blubb;
};
使用構造繼承和Revolver_Ocelot建議的答案,代碼如下所示:
class A
{
public:
A (int a)
{}
};
class B
:
public A
{
public:
using A::A;
float blubb {a};
};
這樣做具有以下編譯時錯誤消息:
foo.cpp:21:22: error: ‘a’ was not declared in this scope
float blubb {a};
^
foo.cpp:21:23: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘float’ in initialization
float blubb {a};
^
您的建議似乎不工作,看看編輯的問題。我添加了兩個示例和錯誤消息。 –
@JensHöpken我已經更新了我的答案。 –