我正在尝试做一个基本的多态性程序,我有一些问题。我有两个文件,Currency.cpp和Dollar.cpp
Currency.cpp看起来像这样
#include <iostream>
using namespace std;
class Currency{
/* code */
};
Dollar.cpp看起来像这样
#include <iostream>
using namespace std;
class Dollar : protected Currency{
/* code /*
};
当我尝试在文件之间构建路径(mac上的命令shift b)时,它告诉我货币不被识别为一个类(即在Dollar.cpp中)。我不应该使用头文件,因为这是一个指定的赋值。我该怎么办?
我在2020年m1 Mac上使用vs code,如果这与它有任何关系
编辑:感谢所有的反馈。据我所知,我的要求是不可能的。这是一个数据结构和算法类的作业,它接受多种语言,所以老师可能对c++或其他东西生疏了。我只需要使用头文件,教授只需要处理它,哈哈。
我不应该使用头文件,因为这是一个指定的赋值。
代码不会像所示的那样工作。Dollar.cpp
需要知道Currency
类是什么样子才能使用它。
.cpp
文件实现定义,例如:
Currency.h:
#ifndef CurrencyH
#define CurrencyH
class Currency{
/* code */
};
#endif
Currency.cpp:
#include <iostream>
#include "Currency.h"
using namespace std;
// implement Currency's methods as needed...
Dollar.cpp:
#include <iostream>
#include "Currency.h"
using namespace std;
class Dollar : protected Currency{
/* code /*
};
但是,由于这不是您的选择,您别无选择,只能将整个Currency
类声明直接复制到Dollar.cpp
中,并确保它与Currency.cpp
中的类声明完全匹配,以避免任何ODR违规,例如:
Currency.cpp:
#include <iostream>
using namespace std;
class Currency{
/* code */
};
// implement Currency's methods as needed...
Dollar.cpp:
#include <iostream>
using namespace std;
class Currency{
/* code */
};
class Dollar : protected Currency{
/* code /*
};