【发布时间】:2017-06-06 08:50:07
【问题描述】:
我知道我的消息格式不正确,但我是新手,所以无论如何请帮助我。 我有两个班级:父亲和儿子。在 Son 中,我有一个 int 和一个字符串。 在父亲中,我有一个儿子对象的向量。 如何仅访问由整数组成的向量部分和/或仅由字符串组成的部分? 非常感谢!
类SON.H
#ifndef SON_H
#define SON_H
#include <iostream>
using namespace std;
class Son
{
public:
Son() {}
Son(int first, string second);
virtual ~Son();
int getFirst() const;
string getSecond() const;
private:
int _first_parameter;
string _second_parameter;
};
#endif // SON_H
CLASS SON.CPP
#include "son.h"
Son::Son(int first, string second)
{
_first_parameter=first;
_second_parameter=second;
}
Son::~Son()
{
//dtor
}
int Son::getFirst() const
{
return _first_parameter;
}
string Son::getSecond() const
{
return _second_parameter;
}
类父亲.H
#ifndef FATHER_H
#define FATHER_H
#include <vector>
#include "son.h"
class Father
{
public:
Father() {}
virtual ~Father();
void filling();
private:
vector<Son> _access_vector;
void _printIntegers(vector<int> v);
void _printStrings(vector<string> v);
};
#endif // FATHER_H
类父亲.CPP
#include "father.h"
Father::~Father()
{
//dtor
}
void Father::filling()
{
int temp_first_param;
string temp_second_param;
cout<<"Insert integer: "<<endl;
cin>>temp_first_param;
cout<<"Insert text"<<endl;
cin>>temp_second_param;
_access_vector.push_back(Son(temp_first_param, temp_second_param));
_printIntegers(_access_vector.getFirst()); /// Here I want to take just the vector of integers
_printStrings(_access_vector.getSecond()); /// Here I want to take just the vector of strings
}
void Father::_printIntegers(vector<int> v)
{
for(unsigned i=0; i<v.size(); ++i)
cout<<v[i]<<endl;
}
void Father::_printStrings(vector<string> v)
{
for(unsigned i=0; i<v.size(); ++i)
{
cout<<v[i]<<endl;
}
}
编译器错误:
||=== 构建:在 Vector_access_experiment 中调试(编译器:GNU GCC 编译器)===| C:\Users\Alessandro\Documents\CodeBlocks\Vector_access_experiment\src\father.cpp||在成员函数'void Father::filling()'中:| C:\Users\Alessandro\Documents\CodeBlocks\Vector_access_experiment\src\father.cpp|17|错误:'class std::vector' 没有名为'getFirst'的成员| C:\Users\Alessandro\Documents\CodeBlocks\Vector_access_experiment\src\father.cpp|18|错误:'class std::vector' 没有名为'getSecond'的成员| ||=== 构建失败:2 个错误,0 个警告(0 分钟,0 秒)===|
【问题讨论】:
-
查看
std::vector提供的是 与您尝试使用它执行的操作,这些错误非常有意义。这些错误如果不是不言自明的,那也算不了什么。std::vector中没有getFirst和getSecond方法。 -
没有“只是由整数组成的向量部分”,所以你不能访问任何这样的东西。
-
getFirst和getSecond是Son类的方法,而不是std::vector类的方法。在尝试访问其方法之前,您必须从向量中获取对象。