C++ 我一直在创建输出成员函数
我被这个类的输出成员函数卡住了。我不知道如何创建它,只是简单地说它似乎不起作用。另外,任何其他建议都会很好。提前谢谢 代码如下:C++ 我一直在创建输出成员函数,c++,output,member-functions,C++,Output,Member Functions,我被这个类的输出成员函数卡住了。我不知道如何创建它,只是简单地说它似乎不起作用。另外,任何其他建议都会很好。提前谢谢 代码如下: #include <iostream> #include <string> #include <vector> using namespace std; class StringSet { public: StringSet(vector<string> str); void add(str
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class StringSet
{
public:
StringSet(vector<string> str);
void add(string s);
void remove(int i);
void clear();
int length();
void output(ostream& outs);
private:
vector<string> strarr;
};
StringSet::StringSet(vector<string> str)
{
for(int k =0;k<str.size();k++)
{
strarr.push_back(str[k]);
}
}
void StringSet::add(string s)
{
strarr.push_back(s);
}
void StringSet::remove(int i)
{
strarr.erase (strarr.begin()+(i-1));
}
void StringSet::clear()
{
strarr.erase(strarr.begin(),strarr.end());
}
int StringSet::length()
{
return strarr.size();
}
void StringSet::output()
{
}
int main()
{
vector<string> vstr;
string s;
for(int i=0;i<10;i++)
{
cout<<"enter a string: ";
cin>>s;
vstr.push_back(s);
}
StringSet* strset=new StringSet(vstr);
strset.length();
strset.add("hello");
strset.remove(3);
strset.empty();
return 0;
}
#包括
#包括
#包括
使用名称空间std;
类字符串集
{
公众:
StringSet(矢量str);
无效添加(字符串s);
无效删除(int i);
无效清除();
int length();
无效输出(ostream和outs);
私人:
向量斯特拉尔;
};
StringSet::StringSet(向量str)
{
对于(int k=0;k如果输出
函数要打印StringSet
对象的状态,可以实现如下:
#include<iterator> //std::ostream_iterator
#include<algorithm> //std::copy
void StringSet::output(ostream& outs)
{
std::copy(starr.begin(), starr.end(), std::ostream_iterator<string>(outs, "\n"));
}
\include//std::ostream\u迭代器
#包括//标准::复制
void StringSet::输出(ostream&out)
{
std::copy(starr.begin()、starr.end()、std::ostream_迭代器(outs,“\n”);
}
好的,您应该首先解决代码中的一些错误:
- 使用指向
StringSet
的指针,然后尝试使用
操作符而不是->
访问成员函数。无论如何,您真的需要动态分配对象吗
StringSet strset(vstr); // No need to allocated dynamically your object
- 之后,您将调用一个不存在的
empty()
方法
- 另外,如果您继续使用动态分配,请不要忘记释放内存:
StringSet* strset = new StringSet(vstr);
// ...
delete strset; // <- Important
StringSet*strset=新的StringSet(vstr);
// ...
删除strset;//看起来像是家庭作业。到目前为止您尝试了什么?在main()
中有趣地使用strset
。我认为修复编译时错误将是一个更高的优先级。“简单地说它似乎不起作用”如果你尝试编译这个程序,那应该是什么?应该是“OrthyType迭代器”,我建议C++和标准库文档、建议和示例。@ WoOsCurig + 1完美建议;@ USER 2420395奇怪……这样,调用你的成员函数,如:<代码> Strut-长度(),< /C> >。
#include <algorithm> // For std::copy
#include <iterator> // std::ostream_iterator
void StringSet::output( ostream& outs )
// ^^^^^^^^^^^^^ don't forget the arguments during the definition
{
std::copy(strarr.begin(), strarr.end(), std::ostream_iterator<string>(outs, "\n"));
}