2015-01-23 4 views
0

Это мой код включает в себя основной, заголовке и исходный файл, который я пытаюсь распечатать функцию доступа из моего класса Адресное_пространства, но о том, чтос использованием кодовых блоков для C++ Я пытаюсь распечатать функцию accessor из моего класса. состояния ошибки, которые запрашивают для членов get_address

запроса член «get_address» в «ob», который не принадлежит классу AddressSpace (std :: string, std :: string, std :: string, int) {aka AddressSpace (std :: basic_string, std :: basic_string, std :: basic_string, Int)}

main.cpp

#include <iostream> 
#include <string> 
#include "AddressSpace.h" 
#include "AddressSpace.cpp" 

using namespace std; 


int main() 
{ 
    string address; 
    string town; 
    string state; 
    int postal; 

    cout << "What is the street you live on?: " <<endl; 
    cin >> address; 
    cout << "What is the city you live in?: " <<endl; 
    cin >> town; 
    cout <<"What is the state you live in?: " << endl; 
    cin >> state; 
    cout << "What is the postal code?: " << endl; 
    cin >> postal; 


    AddressSpace ob(string address,string town,string state,int postal); 

    cout << "Address" << ob.get_address() << endl; 

    return 0; 
} 

AddressSpace.h

#ifndef ADDRESSSPACE_H_INCLUDED 
#define ADDRESSSPACE_H_INCLUDED 

#include <iostream> 
#include <string> 

using namespace std; 

class AddressSpace{ 

public: 
//Default constructor 
    AddressSpace(); 
//overload constructor 
    AddressSpace(string, string, string, int); 
//Accessor Functions 
    string get_address() const; 
    // get_address - returns address 
    string get_town() const; 
    // get_town -returns town 
    string get_state() const; 
    // get_state - returns state 
    int get_postal() const; 
    // get_postal returns zip code 
private: 
    //member variables 
    string street; 
    string city; 
    string st; 
    int zip; 

}; 


#endif // ADDRESSSPACE_H_INCLUDED 

AddressSpace.cpp

#include "AddressSpace.h" 

AddressSpace::AddressSpace(string address, string town, string state, int postal){ 
    string street = address; 
    string city = town; 
    string st = state; 
    int zip = postal; 
} 

string AddressSpace::get_address() const { 
    return street; 
} 

string AddressSpace::get_town() const { 
    return city; 
} 

string AddressSpace::get_state() const { 
    return st; 
} 

int AddressSpace::get_postal() const { 
return zip; 
} 

ответ

1

Следующая строка кода в main() является function declaration или прототип.

AddressSpace ob(string address,string town,string state,int postal); 

Если удалить имена типов в скобках будет делать то, что вы хотели, чтобы построить объект с именем ob, используя заданные параметры.

AddressSpace ob(address, town, state, postal); 
+0

Спасибо, что выполнили :) – Christopher

0

При объявлении нового объекта вы не префиксного типа. Вы также не создали экземпляр строк или целое число. В C/C++ неопределенные значения являются случайными, поэтому хорошей практикой является предоставление каждой переменной значения по умолчанию. Вы также должны указать код для AddressSpace.h и AddressSpace.cpp, чтобы мы лучше поняли, что еще может произойти.

Также обратите внимание на изменение параметров main(). Это не обязательно, но считается хорошей формой, чтобы всегда включать его. Эти аргументы заполняются количеством аргументов и самих аргументов, если ваша программа запущена из командной строки.

Ваш код должен выглядеть следующим образом, я думаю:

#include <iostream> 
#include <string> 
#include "AddressSpace.h" 
//#include "AddressSpace.cpp" //This line isn't needed, you should only include the header file 

using namespace std; 

int main(int argc, char** argv) 
{ 
    string address = ""; 
    string town = ""; 
    string state = ""; 
    int postal = 0; //Note postal codes for Europe include letters, and you most-likely won't be doing math with a zipcode so it might make more sense to make it a string 

    cout << "What is the street you live on?:" << endl; 
    cin >> address; 
    cout << "What is the city you live in?:" << endl; 
    cin >> town; 
    cout << "What is the state you live in?:" << endl; 
    cin >> state; 
    cout << "What is the postal code?:" << endl; 
    cin >> postal; 

    AddressSpace ob(address, town, state, postal); 

    cout << "Address " << ob.get_address(); << endl; 

    return 0; 
} 
+0

спасибо за помощь и советы для правильного программирования. Я включил заголовочный файл и исходный файл, я не уверен, почему вы не могли их видеть – Christopher