Sin llamada coincidente al constructor predeterminado, cuando se usa QVector

Tengo una clase B que crea un objeto de una clase A y llama a un método del objeto.

a.h

#ifndef A_H
#define A_H

class A
{
public:
    A(int);
    void function();
};

#endif // A_H

a.cpp

#include "a.h"

A::A(int x)
{

}
void A::function(){
    //Do something.
}

b.h

#ifndef B_H
#define B_H
#include <QVector>
#include <a.h>


class B
{
public:
    B(int);
    QVector<A> list;
};

#endif // B_H

b.cpp

#include "b.h"

B::B(int y)
{
    list.append(A(y));
    list[0].function();
}  

El problema es que esto no se compila. Devuelve "ninguna función coincidente para llamar a 'A: A ()'". Sé que esto se puede resolver con una declaración directa, pero esto no funciona aquí, ya que quiero llamar a la función "función". Tampoco quiero incluir toda la clase A en la clase B.

Respuestas a la pregunta(2)

Su respuesta a la pregunta