我在定义成员函数时遇到了下面的编译问题。是否有方法在类声明之前定义成员函数,但使用前向声明?
错误:使用不完整类型的“类GetErrorLogInterfaceTest”无效
class GetErrorLogInterfaceTest; // forward declaration of class
void GetErrorLogInterfaceTest::initializeJsonFile() { // member function definition
}
class GetErrorLogInterfaceTest : public ::testing::Test {
我试着在网上搜索一个好的答案,但没有得到我能完全理解的答案。假设我有一个标题"add.h":
inline int add(int a, int b){ return a+b; }
一个名为“adddile.c”的文件:
#include "add.h"
int adddouble(int a, int b){ return 2*add(a,b); }
一个名为“addsquare.c.c”的文件:
#include "add.h"
int addsquare(int a, int b){ return add(a,b)*add(a,b);
假设我有
Base.h
class Base
{
virtual void foo() {...}
};
Derived1.h
class Derived1 : public Base
{
virtual void foo() {...}
};
Derived2.h
class Derived2 : public Base
{
virtual void foo() {...}
};
Header Derived1.h包含在多个源文件中,也通过Base接口使用Derived1类。因为foo是virtual,并且是polymorphic使用的,所以它不能内联。所以它
作为的后续问题
class Base {
public:
virtual ~Base() {}
virtual void func() = 0;
};
class A : public Base {
public:
void func() override { std::cout << this << std::endl; }
};
class B : public Base {
private:
Base& base;
public:
B(B&) = delete;
如果我在主函数之上声明和定义一个命名空间函数,如下面所示,这会导致编译器将其生成为内联函数吗?
我知道,当我们在类声明中定义函数时,函数是由编译器作为内联函数生成的;但是,我不确定下面所示的具体情况是否是这样。有人能帮我澄清一下情况吗?
namespace pairs_with_k_diff {
void inc_and_push_back () {
// function definition
}
}
int main() {
// Call this function inside the main later
}
我正在尝试定义编译器自动生成并导致编译错误的构造函数。下面是我的代码:
class myclass
{
public:
void Test_Func()
{}
};
myclass::myclass()
{
}
编译器是否为上面这样的简单类做了额外的工作。下面是我在MSVC编译器中得到的错误:
"error C2600: 'myclass::myclass' : cannot define a compiler-generated special member function (must be declared in the cl
我写了以下代码:
class A
{
public:
int foo();
};
class B
{
public:
int A::foo(){ return 0; }; //error: non-friend class member 'foo' cannot have a qualified name
};
int main(){ }
为什么会导致这个错误?你能从标准中得到明确拒绝这种解释的引用吗?
我对将函数的父函数定义为定义函数的框架感到困惑,因为函数与定义函数的HOF相关,而HOF定义了函数,然后跳出了作用域。
def foo(x):
print(f'foo x: {x}')
return x
def bar(f):
print(f'bar f: {f}')
def bat(y):
print(f'bat f(y): {f(y)}')
return y
return bat
new_func = bar(foo)
# f1 bar pare
我想把我自己的数据类型传递给一个表单,但是它不起作用:
TYPES: BEGIN OF my_type,
v1 TYPE i,
v2 TYPE i,
END OF my_type.
PERFORM calc using ...some parameters... .
FORM calc using ...some parameters... .
DATA values TYPE my_type " <- ERROR type my_type does not exist
...some code...
ENDFORM.
我已经知道函数对象可以在另一个函数的体内定义。当我试图在主函数中定义一个简单的函数时,会发生错误。
int main(){
void f(){}
return 0;
}
一个函数能在另一个函数中定义吗?
一个类和它的一些成员函数可以在另一个函数或另一个类主体中单独定义吗?(粗体字编辑)
有什么规定要遵守吗?
编辑:非常感谢!但我错误地把类体作为功能,即粗体字,现在它被纠正了。你能告诉我更多吗?
编辑2:关于第二个问题,我应该写:一个类的成员函数可以定义在一个叫做F的函数中,而类声明也在函数F中,而whatif F是一个类定义吗?就像这两个:
//F is a function