Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在一个解决方案中共享类_C++_Visual Studio - Fatal编程技术网

C++ 在一个解决方案中共享类

C++ 在一个解决方案中共享类,c++,visual-studio,C++,Visual Studio,我正在开发一个实用工具(用于实践),它有两个用户可以运行的工具 我想知道在一个解决方案中是否有一个外层,在那里我可以构建被该解决方案的所有项目识别的类 我已经完成了这两个工具,我想将这两个项目添加到一个解决方案中。但是,这些工具可以共享一些非静态类,我真的希望避免每个项目都有多个相同的.cpp/.h文件,因此如果需要编辑或添加到共享类中,我不必将编辑复制/粘贴到每个项目中 我尝试使用资源文件,但它们不会添加.h或.cpp文件。我尝试将这些类添加到它们自己的项目中,然后将它们用作其他项目中的引用,

我正在开发一个实用工具(用于实践),它有两个用户可以运行的工具

我想知道在一个解决方案中是否有一个外层,在那里我可以构建被该解决方案的所有项目识别的类

我已经完成了这两个工具,我想将这两个项目添加到一个解决方案中。但是,这些工具可以共享一些非静态类,我真的希望避免每个项目都有多个相同的.cpp/.h文件,因此如果需要编辑或添加到共享类中,我不必将编辑复制/粘贴到每个项目中

我尝试使用资源文件,但它们不会添加.h或.cpp文件。我尝试将这些类添加到它们自己的项目中,然后将它们用作其他项目中的引用,但是其他项目中的类无法识别它们。我还研究了创建库,但我不确定是否可以创建非静态库,因为这些项目将有多个共享类的对象

我非常直观,我不确定我是否解释好了我的问题,所以这里有一个我想要的简单图表。每个箭头显示每个项目可以“知道”的人(概念上类似于类继承)。大胆的第一个项目是解决方案的入口;本质上就是用户指定运行哪个工具的地方


根据您所描述的,类库将是解决方案。这将允许您在两个项目之间共享两个类。在C++中有两种类型的类库:静态链接库和动态链接库。 下面是一个很好的答案,它可以帮助您确定使用哪种类型的类库

我还包括了两个来自微软的链接,因为你用VisualStudio标记了你的文章,关于如何创建和使用每种类型的库


谢谢,我还在学习如何制作库,所以我不确定这是否是解决方案。但是,是否可以使用具有非静态成员函数的类创建动态或静态链接库?我需要能够从这些类中创建可修改的对象,并且教程仅显示静态类型成员函数。@Ausche是的,您可以使用非静态方法。为了简洁起见,这些示例只使用了静态方法。太棒了,我要试试这个。非常感谢。