在哪里宣布结构等?

cam*_*cam 7 c++ coding-style

是否应在头文件中声明所有结构和类?如果我在源文件中声明了一个struct/class,我需要在头文件中放置什么才能在其他文件中使用它?另外,有没有资源显示C++的一些标准做法?

Bil*_*eal 7

是否应在头文件中声明所有结构和类?
是.编辑:但他们的实现应该在cpp文件中.有时来自C#或Java的用户没有意识到C++中的实现可以与类声明完全分离.

如果我在源文件中声明了一个struct/class,我需要在头文件中放置什么才能在其他文件中使用它?
你不能.编译器需要在使用该类的任何翻译单元中提供的类的完整声明.

另外,有没有资源显示C++的一些标准做法?
您可以下载任意数量的开源应用程序的源代码来查看.虽然你可能会看到唯一完全一致的事情是使用标题保护,并保留头文件中的所有声明.

  • 如果不打算在某些其他源文件中使用它,则结构不必是头文件.为STL算法编写的仿函数就是这样一个例子. (4认同)
  • 我使用了很多实现细节的结构 - 这些结构在.cpp文件中声明 (3认同)