我正在摔跤C2751編譯器錯誤,並不完全明白究竟是什麼導致它。以下很少的代碼產生錯誤:C++編譯器錯誤C2751 - 究竟是什麼導致它?
#include <iostream>
class A {
public:
A() { std::cout << "A constructed" << std::endl; };
static A giveA() { return A(); }
};
class B {
public:
B (const A& a) { std::cout << "B constructed" << std::endl; }
};
int main() {
B b1 = B (A::giveA()); // works
B b2 (B (A::giveA())); // C2751
B b3 (A::giveA()); // works
}
編譯器輸出:
consoleapplication1.cpp(21): error C2751: 'A::giveA': the name of a function parameter cannot be qualified
爲什麼我不能調用構造函數明確的b2
?
你使用什麼編譯器?因爲gcc 5.4使用代碼構建而沒有任何問題。 – knst
@knst他正在使用MSVC(請參閱C2751鏈接) – vaxquis
@knst它不會與[clang](https://wandbox.org/permlink/UajAZ5zfaV8QWmZD)一起編譯。 – songyuanyao