2 ant shen Ant_Shen 于 2014.09.26 12:39 提问

返回自定义对象时的异常

#include
#include
#include
using namespace std;
class listOperateion{
private:
string * a;
string * b;
string pattern;

public:
listOperateion(){}
void setList1(string * a){
this->a = a;
}
void setList2(string * b){
this->b = b;
}
string* getList1(){
return this->a;
}
string* getList2(){
return this->b;
}
static vector split(string str,string pattern)
{
string::size_type pos;
vector result;
str+=pattern;
int size=str.size();
for(int i=0; i {
pos=str.find(pattern,i);
if(pos {
string s=str.substr(i,pos-i);
result.push_back(s);
i=pos+pattern.size()-1;
}
}
return result;
}
static OutputData elementSplit( string str )
{
OutputData od;
vector result = split(str,",");
//cout<<"the result:"<<endl;
int vsize = result.size();
string str1 = new stringvsize;
for(int i=0; i<result.size(); i++)
{
str1[i] = result[i];
//cout<<str1[i]<<endl;
}
od.setA(str1);
od.setB(vsize);
return od;
}
string
dataInput()
{
string a;
char ch1[100];

scanf("%[^\n]", ch1);
a = ch1;

OutputData od ;
od = elementSplit(a);
string *str2 = od.getA();
int vsize = od.getB();
setList1(str2);

/*for (int i=0;i<vsize;i++)
{
    cout<<str2[i];
}*/
return str2;

}
};
class OutputData{
private:
string * a ;
int b;
public:
OutputData(){}
void setA(string * a){
this->a = a;
}
string* getA(){
return this->a;
}
void setB(int b){
this->b = b;
}
int getB(){
return this->b;
}
~OutputData(){}

};
void main(){
listOperateion lo;
lo.dataInput();
string * a = lo.getList1();
/*for (int i=0;ilength();i++)
{
cout< }*/
}
异常:
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(51): error C2146: 语法错误: 缺少“;”(在标识符“elementSplit”的前面)
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(51): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(51): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(52): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(66): warning C4183: “elementSplit”: 缺少返回类型;假定为返回“int”的成员函数
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(41): warning C4018: “<”: 有符号/无符号不匹配
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(53): error C2146: 语法错误: 缺少“;”(在标识符“od”的前面)
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(53): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(58): warning C4018: “<”: 有符号/无符号不匹配
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(63): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(63): error C2228: “.setA”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(64): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(64): error C2228: “.setB”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(65): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(76): error C2146: 语法错误: 缺少“;”(在标识符“od”的前面)
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(76): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(77): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(78): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(78): error C2228: “.getA”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(79): error C2065: “od”: 未声明的标识符
1>e:\vs2010\newproject\crapt01\crapt01\t01.cpp(79): error C2228: “.getB”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
c++新手**

1个回答

pyclivealone
pyclivealone   2014.09.26 18:06

大哥,你这个vector都不指定类型么?模板编程实例化时需要指定class类型。
比如,vector iVec...
还是我落伍了?

Ant_Shen
Ant_Shen 不好意思不知道为什么复制下来的时候少了个类型指定 vector<string>
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!