C++ 如何从不带头文件的不同文件扩展类

0 c++ polymorphism inheritance

我\xe2\x80\x99m 尝试执行基本的多态性程序,但遇到了一些问题。\n我有 2 个文件,Currency.cpp 和 Dollar.cpp

\n

货币.cpp 看起来像这样

\n
#include <iostream>\nusing namespace std;\nclass Currency{\n/* code */\n};\n
Run Code Online (Sandbox Code Playgroud)\n

Dollar.cpp 看起来像这样

\n
#include <iostream>\nusing namespace std;\nclass Dollar : protected Currency{\n/* code /*\n};\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试在文件之间构建路径(在 mac 上使用命令 shift b)时,它告诉我货币不被识别为类(在 Dollar.cpp 中)。I\xe2\x80\x99m 不应该使用头文件,因为这是用于指定的分配。我应该做些什么?

\n

我在 2020 m1 Mac 上使用 vs code,如果这与它有任何关系的话

\n

编辑:\n感谢所有反馈。据我所知,我在这里问的是不可能的。这个作业是针对接受多种语言的数据结构和算法课,所以可能老师对c++之类的生疏了。我只需要使用头文件,教授就需要处理它,哈哈。

\n

Rem*_*eau 5

\n

I\xe2\x80\x99m 不应该使用头文件,因为这是用于指定的分配。

\n
\n

该代码将无法如图所示工作。Dollar.cpp需要知道该类Currency是什么样子才能使用它。

\n

理想解决方案是使用头文件来跨翻译单元共享声明,使用.cpp文件来实现定义,例如:

\n

货币.h:

\n
#ifndef CurrencyH\n#define CurrencyH\n\nclass Currency{\n    /* code */\n};\n\n#endif\n
Run Code Online (Sandbox Code Playgroud)\n

货币.cpp:

\n
#include <iostream>\n#include "Currency.h"\nusing namespace std;\n\n// implement Currency\'s methods as needed...\n
Run Code Online (Sandbox Code Playgroud)\n

美元.cpp:

\n
#include <iostream>\n#include "Currency.h"\nusing namespace std;\n\nclass Dollar : protected Currency{\n    /* code /*\n};\n
Run Code Online (Sandbox Code Playgroud)\n

但是,由于这不是您的选择,您别无选择,只能直接将整个Currency类声明复制到其中Dollar.cpp,并确保它与类声明完全匹配Currency.cpp,以避免任何ODR违规,例如:

\n

货币.cpp:

\n
#include <iostream>\nusing namespace std;\n\nclass Currency{\n    /* code */\n};\n\n// implement Currency\'s methods as needed...\n
Run Code Online (Sandbox Code Playgroud)\n

美元.cpp:

\n
#include <iostream>\nusing namespace std;\n\nclass Currency{\n    /* code */\n};\n\nclass Dollar : protected Currency{\n    /* code /*\n};\n
Run Code Online (Sandbox Code Playgroud)\n