Объявление функции вместо вызова конструктора в переполнении стека

Я ожидал инициализировать объект B здесь, но вместо этого я получил объявление функции:

#include <iostream>
using namespace std;

class A {};

class B {
public:
B(const A&) {
cout << "B: conversion constructor\n";
}
};

int main()
{
B b( A() ); //function declaration: B b( A(*)() );
b.test();
}

Выход: запрос на член ‘test’ в ‘b’, который имеет тип не-класса ‘B (A (*) ()) ‘*

Почему конструктор не вызывается в этой ситуации?

2

Решение

Это один из многих случаев, когда анализатор считает, что объявление переменной является объявлением функции, попробуйте написать его так:

B b = A() ;  // Now the compiler doesn't think that it's a function declaration
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]