Почему я не могу получить доступ к участнику этого класса? [Дубликат]

На этот вопрос уже есть ответ здесь:

Моя попытка инициализации значения интерпретируется как объявление функции, и почемуt A a (()); реши это? 5 ответов

У меня есть следующие три определения класса:

class String
{
    public:
        String() {}
        String(const char *) {}
};

class ClassA
{
    public:
        ClassA(const String &) {}
};

class ClassB
{
    public:
        ClassB(const ClassA &, const String & = String()) {}
        void method() {}
};

Теперь предположим, что я хочу создать экземпляр:ClassB

String name("test");
ClassA item(ClassB(name));

Это нет работа:

error: request for member 'method' in 'item', which is of non-class
  type 'ClassA ()(ClassB)'

Что означает эта ошибка? И что это за странный типClassA ()(ClassB) компилятор продолжает ссылаться на?

Ответы на вопрос(1)

Ваш ответ на вопрос