所以,我的老师给了班级这个代码,但是我在运行它时遇到了麻烦。 我得到的错误是C2146& C4430。我尝试通过添加包含到头文件来解决问题,但我仍然不确定问题是什么。
我已经评论了下面的代码,其中编译器指出了错误。
assoc.h文件
template<class T> class assoc {
public:
struct pair {
string key; //error C2146: syntax error: missing ';' before identifier 'key'
T value;
pair *next;
pair() : key(), value(), next(NULL) {}
pair( const string& key, T value, pair* next = NULL ) //error c4430: missing type specifier - int assumed. Note: c++ does not suport default - int
: key(key), value(value), next(next) {}
};
private:
pair * table;
}
答案 0 :(得分:2)
未定义string
类型。您需要从std
命名空间导入它:
#include <string>
using std::string;
当然你也可以使用using namespace std;
从命名空间导入所有内容,但这通常是一个坏主意 - 对于不像string
那样广泛的事情,最好使用限定名称(例如{{ 1}})。您的代码实际上是一个很好的示例,std::pair
using namespace std
会与pair
中的std
发生碰撞。