c++ - C++ 类向量错误,表达式必须有指针类型
问题描述
目前正在学习一些 c++ 并且不确定为什么这给了我“表达式必须具有指针类型”。
映射.hpp
class RouteMap
{
public:
RouteMap();
string getCurrent_();
void StoreCity(string b);
private:
std::vector<string>* cities();
string current_;
};
映射文件
RouteMap::RouteMap(){}
string RouteMap::getCurrent_()
{
return current_;
}
void RouteMap::StoreCity(string b)
{
cities->push_back(b); //Error
}
std::vector<string> RouteMap::cities()
{
return std::vector<string>();
}
我试图将向量 Cities 作为私有成员,这样当我运行成员函数 StoreCity(string x) 时,它会将特定字符串 push_back 到 Cities 中。
解决方案
我要试一试,说问题cities()
是一个函数,需要括号:
cities()->push_back(b);
编辑刚刚发现cities()
(傻我)的实现。您还有另一个问题,那就是您的声明和实现不匹配。
// declaration
std::vector<string>* cities();
// implementation. Notice the lack of a pointer type return
std::vector<string> RouteMap::cities()
{
return std::vector<string>();
}
每次都返回一个新向量也很奇怪。您可能需要一个成员变量:
class RouteMap
{
//...
private:
std::vector<string> my_cities;
//...
};
然后从那里返回成员变量:
std::vector<string>* RouteMap::cities()
{
return &my_cities;
}
编辑2:我注意到你可能,虽然你可以像这样修复这些东西并让它工作,但事实是你可能根本不想cities()
成为一个函数。您可能的意思是让它成为一个成员变量:
class RouteMap
{
//...
private:
std::vector<string> cities;
//...
};
这不需要实现(又名RouteMap::cities(){}
),您可以在任何成员函数(因为它是私有成员)中使用它,例如 current_。
推荐阅读
- python - 如果它出现在后续列中,则替换数据框列中的文本
- c# - 用于 C# 中大型数据集的 DataFrame
- ansible - 如何在 Ansible azure_rm conditional_groups 中使用多个语句
- c# - WCF : 添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据
- mongodb - 构建复合索引问题
- amazon-web-services - AWS 客户端似乎没有读取配置文件来读取区域
- pine-script - 如何获取由指标绘制的线的颜色并根据该颜色分配一个数字(如果颜色 X,-1 或如果颜色 y,+1)?
- reactjs - 如何将密钥传递给反应组件
- hive - GreenPlum UDF 函数转换为 Hive
- bootstrap-4 - Bootstrap 链接上的圆角