Class name does not name a type in C++

前端 未结 10 1967
情深已故
情深已故 2020-12-08 09:37

I just started programming in C++, and I\'ve tried to create 2 classes where one will contain the other.

File A.h:

#ifndef _A_h
#define          


        
10条回答
  •  眼角桃花
    2020-12-08 10:16

    Include "B.h" in "A.h". That brings in the declaration of 'B' for the compiler while compiling 'A'.

    The first bullet holds in the case of OP.

    $3.4.1/7 -

    "A name used in the definition of a class X outside of a member function body or nested class definition27) shall be declared in one of the following ways:

    before its use in class X or be a member of a base class of X (10.2), or

    — if X is a nested class of class Y (9.7), before the definition of X in Y, or shall be a member of a base class of Y (this lookup applies in turn to Y’s enclosing classes, starting with the innermost enclosing class),28) or

    — if X is a local class (9.8) or is a nested class of a local class, before the definition of class X in a block enclosing the definition of class X, or

    — if X is a member of namespace N, or is a nested class of a class that is a member of N, or is a local class or a nested class within a local class of a function that is a member of N, before the definition of class X in namespace N or in one of N’s enclosing namespaces."

提交回复
热议问题