考虑以下代码
struct A {
A() { /* do something */ }
};
struct B {
B(const A& a) { /* do something*/ }
};
int main() {
B b(A());
// the rest of the code
}
所以我打算将b
定义为从A
的临时实例构造的变量。但是,编译器将此行理解为函数原型声明:
warning C4930: 'B b(A (__cdecl *)(void))': prototyped function not called (was a variable definition intended?)
有人可以解释发生了什么以及如何做我想做的事情吗?这是一个已知的模糊性,由标准解决了函数原型而不是变量定义吗?
我知道B b = A();
有效,但是,我不喜欢它的样子。它没有表明意图。