矢量类型函数实现
vector type function implemetation
class City
{
private:
int id;
string name;
int populations;
int nooftourist;
vector<Attraction*>&attractions;
public:
City(int id,string name,int populations,int nooftourist):id(id),name(name),populations(populations),nooftourist(nooftourist){}
void setId(int _id);
void setName(string _name);
int getId();
string getName();
void display() {}
vector<Attraction*>getAttractions() { return attractions;}
};
int main(){
vector<City*>cities;
cities.push_back(new City(111,"Kuala Lumpur",80000,4000));
cities.push_back(new City(112,"Malacca City",30000,1500));
cities.push_back(new City(113,"Ipoh",70000,3500));
for (int i = 0; i < cities.size(); i++) { cout<<i+1<<"."<<cities[i]->getName()<<endl; }
for (int i = 0; i < cities.size(); i++) { delete cities[i]; }
vector<Attraction*> att = cities.getAttractions();
att.push_back(new Attraction(11,"Pavillion",1));
}
这只是我代码的一部分,我还有一些类,但这和这里的问题无关,当我编译时为什么说城市没有成员getAttraction
? 这是主要问题
问题是
vector<Attraction*>&attractions;
是对向量的引用,因此您需要在构造函数中初始化它。 由于您不这样做,因此您的代码将无法编译,因为引用必须与指针不同初始化。 我不认为你的意思是有一个参考,从你的代码的外观来看,它看起来不需要它。 您可以简单地将其更改为:
vector<Attraction*> attractions;
它应该编译。
附带说明一下,我认为您的意思是getAttractions()
返回对向量的引用,以便您可以修改类持有的向量。 如果是这种情况,请更改
vector<Attraction*>getAttractions() { return attractions;}
自
vector<Attraction*>& getAttractions() { return attractions;}
和
vector<Attraction*> att = cities.getAttractions();
自
vector<Attraction*>& att = cities.getAttractions();
我也不清楚你为什么要使用指针。 在您提供的代码中,没有理由使用它们,而只是使用常规的自动对象。
问题来自这样的表达式:
vector<Attraction*>&attractions;
是对向量的引用,必须初始化(与指针不同(。您需要在构造函数中初始化它。
似乎您实际上不需要使用引用,因此将上述语句更改为vector<Attraction*> attractions;
应该使程序编译。
但是,我建议不要使用指针,而是使用常规对象,因为代码中实际上并不需要指针。
相关文章:
- 在命名空间内部还是外部实现 c++ 函数?
- 如何在C++中实现函数(f)(x)(y, z)(g)(r)
- 如何在C++中实现函数上的二叉搜索?
- 键按下事件错误 Qt 实现函数时
- 在子类之外实现函数导致未知错误
- 通过模板滥用实现函数式C++
- C++,实现函数"int next(std::string param)"时出现奇怪的编译器错误
- 我正在尝试创建自己的 strcat() 函数,而不是使用库实现函数<cstring>
- 如果未实现函数,则在链接时启用错误
- 用函数参数实现c++函数指针
- 如何在Android SDK中调用和实现C++函数
- 在 C++ RCPP 中实现 R 函数
- 实现函数模板填充多维对象
- 类的层次结构,试图在基本级别实现函数
- 用c++实现函数对象的自动检测类型
- 用shared_ptrs实现函数模板的C++实例化
- 在类中实现函数导致错误:成员引用基类型'ifstream (string)'不是结构或联合
- 用c++实现S函数.生成错误
- 引用可以用于实现函数重写吗
- 如何在c++中实现函数超时