C++ 类的前向声明之后、类声明之前的类成员函数定义

C++ 类的前向声明之后、类声明之前的类成员函数定义,c++,C++,我在定义成员函数时遇到了以下编译问题。有没有一种方法可以在类声明之前定义成员函数,但使用前向声明 错误:无效使用不完整的类型“class GetErrorLogiInterfaceTest” 不可以。无法定义不完整类的成员函数。只能定义已定义类的成员函数。提前声明是不够的 标准在[class.mfct]中说: 成员函数可以在其类定义中定义(11.4),在这种情况下,它是一个内联成员 函数(10.1.6),或者如果已声明但未声明,则可在其类定义之外定义 在其类定义中定义了 现在,规则并没有说成员函

我在定义成员函数时遇到了以下编译问题。有没有一种方法可以在类声明之前定义成员函数,但使用前向声明

错误:无效使用不完整的类型“class GetErrorLogiInterfaceTest”


不可以。无法定义不完整类的成员函数。只能定义已定义类的成员函数。提前声明是不够的

标准在[class.mfct]中说:

成员函数可以在其类定义中定义(11.4),在这种情况下,它是一个内联成员 函数(10.1.6),或者如果已声明但未声明,则可在其类定义之外定义 在其类定义中定义了

现在,规则并没有说成员函数只能在这两个地方定义,所以除非您知道标准没有其他规则允许在其他地方定义成员函数(据我所知,它没有),否则这本身就不是技术上完整的信息

然而,该段继续

。。。成员函数定义除外 出现在类定义之外,并且类的成员函数的显式专门化除外 出现在类定义之外的模板和成员函数模板(17.8),成员函数 不得重新申报


请注意,成员函数不应在类定义中重新声明。如果成员函数是在类定义之前定义的,那么类定义中的函数声明将是重新声明,并且将违反此规则。

否。该标准也涵盖了这一琐碎的方面

来自CPP草案(N4713)

12.2.1成员函数[class.mfct]

  • 成员函数可以在其类定义中定义,在这种情况下,它是一个内联成员函数;或者,如果它已经声明但未在其类定义中定义,则它可以在其类定义之外定义

  • 因此,用上述任一方法定义成员函数首先需要类定义。

    简短回答:否。
    class GetErrorLogInterfaceTest; // forward declaration of class
    void GetErrorLogInterfaceTest::initializeJsonFile() { // member function definition
    }
    class GetErrorLogInterfaceTest : public ::testing::Test {
    public:
        void initializeJsonFile(); // member function declaration
     }