객체를 생성할 때 에러: request for member '..' in '..' which is of non-class type


클래스 안에 인자를 하나도 안 받는 생성자랑, int형 인자를 하나받는 생성자를 정의했습니다.

근데 main함수에서 객체를 만들 때

파라미터 하나받는 생성자(2)는 괜찮은데 파라미터 하나도 안 받는 생성자(1)는 에러가 떠요! 왜죠?

에러내용

nonclass.cpp: In function ‘int main(int, const char**)’: nonclass.cpp:17: error: request for member ‘bar’ in ‘foo2’, which is of non-class type ‘Foo ()()’

소스코드

class Foo
{
  public:
    Foo() {};
    Foo(int a) {};
    void bar() {};
};

int main()
{
  //이건 괜찮음
  Foo foo1(1);
  foo1.bar();

  // 이건 안 괜찮음
  Foo foo2();
  foo2.bar();

  return 0;
}

  • 2016년 01월 15일에 작성됨

조회수 344


1 답변


좋아요
0
싫어요
채택취소하기

Foo foo2(); -> Foo foo2; 로 바꾸세요.

컴파일러는 Foo foo2()를 생성자가 아니라 Foo객체를 반환하는 foo2()함수로 생각합니다.

기본 생성자의 괄호는 Foo* foo2 = new Foo() 같이 포인터 타입 객체를 생성할 때만 써주세요


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close