我正在尝试在函数中返回string rock
。我通过在主函数中使用cout<<computertest.returncomputer()<<endl;
来调用函数。但是我有一个空字符串。但是,如果我将rock更改为“ abc”,它将返回abc。我的代码在做什么错?顺便说一下,当size = 7时,test1和test2给我R R R R。
//computer.cpp
#include "computer.h"
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
Computer::Computer(string Rock, int Size){
rock = Rock;
size = Size;
}
void Computer::Computerplayer(){
int i = 0;
int l = 1;
for(i=0;i<size;i+=2){
rock += 'R';
rock += ' ';
}
/*cout<<"test1 "<<rock<<endl;*/
}
string Computer::returncomputer(){
/* cout<<"test2 "<<rock<<endl; */
return rock;
}
标题
//computer.h
#ifndef COMPUTER_H
#define COMPUTER_H
#include <iostream>
#include <string>
using namespace std;
class Computer{
public:
Computer(string Rock, int Size);
void Computerplayer();
string returncomputer();
private:
string rock;
int size;
};
#endif
主要
//main.cpp
#include "computer.h"
#include "human.h"
#include "referee.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
int size;
string type = "3 S R P";
string rock;
getline(cin, type);
size = type.length();
cout<< size<<endl;
Human humantest(size, type);
Computer computertest(rock, size);
/*Referee refereetest(size, type, computertest.returncomputer());
humantest.Humanplayer();
refereetest.Result();*/
/*computertest.Computerplayer();*/
cout<<computertest.returncomputer()<<endl;
}
答案 0 :(得分:2)
您似乎没有在修改rock
,因此它仍然是一个空字符串。
这会使用空的Computer
字符串构造rock
对象:
Computer computertest(rock, size);
这可能会修改rock
,但这不是因为它被注释掉了:
/*computertest.Computerplayer();*/