私はC2751コンパイラエラーと対戦しており、正確に何が原因か分かりません。以下の少しのコードではエラーが発生します。私はb2
に対して明示的にコンストラクタを呼び出すことはできませんなぜC++コンパイラエラーC2751 - 正確には何が原因ですか?
consoleapplication1.cpp(21): error C2751: 'A::giveA': the name of a function parameter cannot be qualified
:出力
#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
}
コンパイラ?
どのコンパイラを使用しますか? gcc 5.4は何の問題もなくコードをビルドしているからです。 – knst
@knst彼はMSVCを使用しています(C2751リンクを参照)。 – vaxquis
@knst [clang](https://wandbox.org/permlink/UajAZ5zfaV8QWmZD)でもコンパイルされません。 – songyuanyao