試圖在下面的代碼來構建嵌套類A::B
的實例時我得到一個編譯器錯誤:構造函數參數無法識別
#include <cstdio>
using namespace std;
struct A{
int n;
A():
n(1){}
struct B{
A& a;
B(A a):
a(a){
a.n=2;
}
~B(){
a.n=0;
}
};
};
int main() {
A a;
printf("%d\n",a.n);
do{
A::B(a);
printf("%d\n",a.n);
}while(false);
printf("%d\n",a.n);
return 0;
}
當我打電話的A::B
構造函數的編譯器無法識別的說法。我做錯了什麼?
請提供[最小,完整和可驗證示例](http://www.stackoverflow.com/help/mcve)。這至少需要發佈你正在用來構造'Locker'的實際代碼,以及你得到的實際編譯錯誤。 – Barry
@Barry現在有一個更好的例子。 – xiver77
@ xiver77'A :: B(a);'這不符合你的想法。 – PaulMcKenzie