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