Je suis aux prises avec l'erreur de compilation C2751 et je ne comprends pas vraiment ce qui le cause exactement. Le petit code suivant produit l'erreur:C++ Compiler Error C2751 - Qu'est-ce qui le cause exactement?
#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
}
sortie du compilateur:
consoleapplication1.cpp(21): error C2751: 'A::giveA': the name of a function parameter cannot be qualified
Pourquoi ne puis-je appeler le constructeur explicitement b2
?
Quel compilateur utilisez-vous? Parce que gcc 5.4 construit avec du code sans aucun problème. – knst
@knst il utilise MSVC (voir le lien C2751) – vaxquis
@knst Il ne compile pas avec [clang] (https://wandbox.org/permlink/UajAZ5zfaV8QWmZD) non plus. – songyuanyao