有人可以举个例子说明公共标题和私有标题是如何工作的吗?我已经在网上做了一些阅读,但我似乎找不到有关示例代码的有用信息.我被告知我应该使用私有标头来分隔我的代码的公共和私有部分,以创建静态库.经过一番阅读后,我对它是如何工作有了一个大概的了解,但我真的很感激一个很好的例子让我开始.具体来说,我不太明白的是如何将接口函数放在我的公共头文件中,私有变量/函数放在我的私有头文件中?谢谢!
编辑:
也许我没有正确处理我的问题,但我的意思是,例如,我有myMath.h和myMath.cpp,而myMath.h有:
class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
private:
double a;
double b;
};
Run Code Online (Sandbox Code Playgroud)
myMath.cpp具有函数的实现.我怎样才能使myMath.h只有三个公共函数,而私有变量在另一个文件中定义(例如myMath_i.h),这三个文件就是这样我创建静态库之后用户只需要myMath.h.这也意味着myMath.h不能#include myMath_i.h.所以类似于:
myMath.h:
class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
}
Run Code Online (Sandbox Code Playgroud)
和myMath_i.h:
class myMath{
private:
double a;
double b;
}
Run Code Online (Sandbox Code Playgroud)
当然那是不可能的,因为那时我将重新定义myMath类......
我正在尝试编译一个我最近开始工作的项目,并被要求在 clang 而不是 gcc 中编译代码。该项目有一个 CMake 文件,我尝试使用
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ../src
Run Code Online (Sandbox Code Playgroud)
但是抛出了一个错误,我认为这是因为 clang 没有 Fortran 编译器,并且项目的一部分有 Fortran 代码。有没有办法让它在编译 Fortran 代码时使用 gfortran(以前在使用 gcc 时使用),其余部分使用 clang/clang++?
我认为相关的 cmake 文件部分是:
enable_language(Fortran)
string(REGEX MATCH gfortran HAVE_GFORTRAN ${CMAKE_Fortran_COMPILER})
string(REGEX MATCH xlf HAVE_XLF ${CMAKE_Fortran_COMPILER})
string(REGEX MATCH pg77 HAVE_PG77 ${CMAKE_Fortran_COMPILER})
string(REGEX MATCH g77 HAVE_G77 ${CMAKE_Fortran_COMPILER})
string(REGEX MATCH ifort HAVE_ifORT ${CMAKE_Fortran_COMPILER})
string(REGEX MATCH f77 HAVE_F77 ${CMAKE_Fortran_COMPILER})
if(HAVE_GFORTRAN)
set(F_LIBRARY gfortran CACHE string "fortran library")
find_library(F_LIBRARY NAMES gfortran)
set(FORTRAN_UNDERSCORE end CACHE string "What type of fortran underscore style - linux,end,none") …Run Code Online (Sandbox Code Playgroud)