2017-11-07 14 views
-4

ヘッダーファイルに文字列名がありますが、これはcppソースファイルのgetName()メソッドを使用して返す場合、このエラーが発生します。 "error: cannot convert 'std::string {aka std::basic_string<char>}' to 'int' in return|"C++で文字列を返しますか?

文字列名変数を正しく返すようにgetName()メソッドを変更するにはどうすればよいですか?私はC++に感謝しています。 (問題はPerson.cppの最後のメソッドでLIES)

ヘッダーファイル:

#ifndef PERSON_H 
#define PERSON_H 
#include <string> 

class Person{ 

private: 

    int age; 
    std::string name; 

public: 

    Person(); //constructors 
    Person(int x, std::string y); 
    Person(int x); 
    Person(std::string y); 
    Person(std::string y, int x); 

    setAge(int x); //set functions 
    setName(std::string x); 

    getAge(); //set functions 
    getName(); 




}; 
#endif 

Person.cpp (PROBLEM IS WITH LAST (getName())方法:

#include "Person.h" 
#include <iostream> 
#include <string> 

//Constructor Functions 

Person::Person(){ //constructor #1, constructor for no set parameters 

}//end of Constructor #1 

Person::Person(int x, std::string y){ //constructor #2, constructor for when 
both int age and string name are given 

}//end of Constructor #2 

Person::Person(int x){ //constructor #3, constructor for when only int age 
is given 

}//end of Constrictor #3 

Person::Person(std::string x){ //constructor #4, constructor for when only 
string name is given 

}//end of Constructor #4 

Person::Person(std::string y, int x){ //constructor #6, constructor that 
uses same parameters as constructor #2 but has order reversed 

}//end of Constructor #6 

//end of Constructor Functions 


//Set Functions 

Person::setAge(int x){//sets int age to the int x parameter 

}//end of setAge function 
Person::setName(std::string x){//sets string name to the string x parameter 

}//end of setName function 

//end of Set Functions 


//Get Functions 

Person::getAge(){//returns int age 
return age; 
}//end of getAge 

Person::getName(){//returns string name 
//PROBLEM IS HERE ********************************************** 
return name; 
} 
+1

あなたはすべての場所で戻り値の型のコンセプトを見逃しているようです。 – drescherjm

+2

メンバ関数で戻り値の型を指定する必要があります。 –

+1

このチュートリアルのC++クラスを読む:http://www.cplusplus.com/doc/tutorial/classes/ –

答えて

4

あなたは両方で機能戻り値の型を指定する必要があります宣言:

void setAge(int x); 
void setName(std::string x); 

int getAge(); 
std::string getName(); 

...定義:

些細な機能このため
int Person::getAge(){ 
    return age; 
} 

std::string Person::getName(){ 
    return name; 
} 

、それはしかし、クラス定義内で直接関数を定義するためにはかなり一般的です:

class Person{ 

private: 

    int age; 
    std::string name; 

public: 
    // ... 

    void setAge(int x) { age = x; } 
    void setName(std::string x) { name = x; } 

    int getAge() { return age; } 
    std::string getName() { return age; } 
}; 

あなたget機能が正常にもconstをマークする必要があります:

int getAge() const { return age; } 
    std::string getName() const { return age; } 

このそれらをconstオブジェクトで呼び出すことができます。

物の外見からは、pseudo-classes and quasi-classesも読んでください。

0

ああ、あなたは 'get'関数に戻り値を通知する必要があります。 このように:

int getAge() { return age; } 
std::string getName() { return age; } 
関連する問題