2015-10-21 5 views
-1

Pardon пример, но в этом случае:Извлечение значений объекта из массива?

#include <iostream> 
#include <string> 

using namespace std; 

class A { 
private: 
    string theName; 
    int theAge; 
public: 
    A() : theName(""), theAge(0) { } 
    A(string name, int age) : theName(name), theAge(age) { } 
}; 

class B { 
private: 
    A theArray[1]; 
public: 
    void set(const A value) {theArray[0] = value; } 
    A get() const { return theArray[0]; } 
}; 

int main() 
{ 
    A man("Bob", 25); 
    B manPlace; 
    manPlace.set(man); 
    cout << manPlace.get(); 
    return 0; 
} 

Можно ли мне получить содержимое «человек» объект в основном, когда я называю manPlace.get()? Я намерен напечатать имя (Bob) и возраст (25), когда я вызываю manPlace.get(). Я хочу сохранить объект внутри массива в другом классе, и я могу получить содержимое указанного массива в главном.

+0

'const A & temp = manPla ce.get(); '? –

ответ

0

Вам необходимо определить ostream::operator<< на вашем классе A, чтобы это сделать - в противном случае формат, в котором возраст и имя должны быть сгенерированы как текстовый вывод, не определены (и они являются частными членами вашего класса A).

Посмотрите ссылку на ostream::operator<<. Для вашего класса А, такой оператор может быть определен следующим образом:

std::ostream& operator<< (std::ostream &out, A &a) { 
    out << "Name: " << a.theName << std::endl; 
    out << "Age: " << a.theAge << std::endl; 
    return out; 
} 

Что бы вывести что-то вроде:

Name: XX 
Age: YY 

Таким образом, ваш полный код будет выглядеть так:

#include <iostream> 
#include <string> 

using namespace std; 

class A { 
private: 
    string theName; 
    int theAge; 
public: 
    A() : theName(""), theAge(0) { } 
    A(string name, int age) : theName(name), theAge(age) { } 
    friend std::ostream& operator<< (std::ostream &out, A &a) { 
    out << "Name: " << a.theName << std::endl; 
    out << "Age: " << a.theAge << std::endl; 
    return out; 
    } 
}; 

class B { 
private: 
    A theArray[1]; 
public: 
    void set(const A value) { theArray[0] = value; } 
    A get() const { return theArray[0]; } 
}; 

int main() 
{ 
    A man("Bob", 25); 
    B manPlace; 
    manPlace.set(man); 
    cout << manPlace.get(); 
    return 0; 
} 

, который будет выход:

Name: Bob 
Age: 25 
+0

Спасибо человеку, я ценю помощь. – dc90

Смежные вопросы