类方法内联定义
Class method inline definitions
我发现这是一种非常吸引人的编程风格,在结构体中直接内联定义结构体/类的所有方法,例如仅以这种方式定义结构体:
"A.hpp"
class A;
"A.cpp"
class A
{
A() = default;
void method() { }
};
而不是
"A.hpp"
class A
{
A();
void method();
};
"A.cpp"
A::A() = default;
void A::method() { }
这意味着将类/结构的定义放在代码文件中,并且只在头文件中包含声明。
但是,当编译器需要知道其他代码文件中的结构/类布局时,这会遇到问题。
是否有一种编程风格支持这个?也许只有通过getter/setter来获取和设置字段?然而,这种方法会导致大量的样板文件。
仅仅在头文件中包含结构/类定义会导致头文件相互递归的问题,除非显式地将声明放在另一个头文件中。
我可以在像D这样的语言中用模块系统实现这种编程风格,但是如何在c++中实现呢?
你在做什么叫做前向声明
您将无法在所有其他翻译单元中使用该类做任何事情(例如调用方法,创建实例),除了一个.cpp文件,您在其中定义了它。所以,这个想法是完全无用和糟糕的。你会得到一大堆链接器错误。
所以,你要么坚持样式#2。或者在头文件中定义内联方法,如
struct A {
A() {} // something
int func() { /* function body */
}
相关文章:
- 使用用户定义的参数调用future/async并调用类方法
- 单独定义模板化嵌套类方法的正确语法
- 通过函数指针定义类范围之外的方法
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 编译器无法识别在类声明之外定义的方法
- 定义类模板构造函数的两种方法之间的区别
- C++是否有定义的方法来传递指向类的成员对象的成员函数的指针
- 如何最好地让用户重新定义类方法
- 查询数据库以在 C++ 中创建自定义类集合的最佳方法
- 如何定义和设置指向模板类方法的功能指针
- 对超类方法的未定义引用
- 如何在源文件中定义类并将其声明在标题文件中(而不必使用`class :: method'语法定义类方法)
- 在另一个文件中定义类方法
- Win32应用程序,在调用Windows内容之前调用自定义类方法
- 如何避免在模板专门化中重新定义类方法
- c++:如何定义类方法作为线程的启动例程(使用pthread库)
- 在类体之外定义类方法时出错
- 在构建共享库时多重定义类方法
- 蓝图中的自定义类方法
- c++中的用户定义类方法