我使用C++的个人风格总是把类声明放在一个包含文件中,并在.cpp文件中定义,非常类似于Loki对C++头文件,代码分离的回答.不可否认,我喜欢这种风格的部分原因可能与我花费编码Modula-2和Ada的所有年份有关,两者都有与规范文件和正文文件类似的方案.
我有一个同事,比我更了解C++,他坚持认为所有的C++声明应尽可能在头文件中包含定义.他并不是说这是一种有效的替代风格,甚至是一种稍微好一点的风格,而是这是每个人现在都用于C++的新普遍接受的风格.
我不像以前那样柔软,所以我并不急于拼抢他的这个潮流,直到我看到更多的人和他在一起.那个成语真的有多常见?
只是给出答案的一些结构:它现在是The Way,非常常见,有点普遍,不常见,还是出错?
我喜欢DRY的概念(不要重复自己[oops]),但C++的头文件概念违背了这种编程规则.完全在头文件中定义一个类成员有什么缺点吗?如果对模板做的是正确的,为什么不对正常的类?我有一些缺点和好处的想法,但你的是什么?
在C#或Java中,类是同时声明和定义的.在C++中,规范是分开执行.如果我们将整个类写在一个文件中,例如.cpp文件并将其包含在引用它的文件中,除了延长编译过程之外,技术上会发生什么样的坏事呢?
Clang和MSVC已经支持来自未完成的C ++ 20标准的Modules TS。我可以使用CMake或其他构建系统来构建基于模块的项目吗?
我有一个functions.h名为....现在我知道,这是不明智的头文件来定义功能,但相比其突然出现的问题是我最不关心的...
我在一个名为的functions.h中定义了一个函数
void sayhi()
{
cout<<"hi";
}
Run Code Online (Sandbox Code Playgroud)
现在我创建了一个lines.h文件,其函数在lines.cpp文件中定义...在lines.cpp文件中我包含了functions.h ...并使用了sayhi(); 在line类的构造函数中...然后在mymain.cpp(包含int main)中我再次包含functions.h,在main中我称为sayhi();
但是当我编译它表现出mymain.cpp告知的sayHi()一个错误的程序已经被定义在lines.obj ...ü可以指出我在做什么错?
c++ ×6
header-files ×2
c ×1
c++-modules ×1
c++20 ×1
class ×1
cmake ×1
coding-style ×1
header ×1
visual-c++ ×1