对象不听方法或不创建? (C ++ OO)

时间:2015-02-27 20:03:57

标签: c++

每当我尝试制作一个对象并在其上调用一个函数时,它似乎无法工作。

我不知道为什么,因为我似乎也没有错误。

我已经在这里搜索了构造函数和toString方法,但是找不到任何有用的东西。

我曾尝试编辑(不同)构造函数成员中的成员, 试图重写toString方法。 试图制作本地对象(没有指针)。

但它并没有将我在调用构造函数时创建的对象中的内容返回给我。

问题出在这个问题的哪个位置?

这是我的代码:

.h文件:

#pragma once
#include "stdafx.h"
#include <string>
#include <sstream>
#include <iostream>
using namespace std;


class Store{

private:
    int id;
    string name;
    string adress;
    string telephone;
    string btwNumber;


public:
    int getId();
    void setId(int);
    string getName();
    void setName(string);
    string getAdress();
    void setAdress(string);
    string getTelephone();
    void setTelephone(string);
    string getBtwNumber();
    void setBtwNumber(std::string);
    string toString();
    Store(int, string, string , string, string);
};

.cpp文件:

// Store.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "Store.h"



Store::Store(int idnum, string nameS, string adreS, string telephonE, string btwnummeR){
    idnum = id;
    nameS = name;
    adreS = adress;
    telephonE = telephone;
    btwnummeR = btwNumber;
}


int Store::getId()
{
    return id;
}

void Store::setId(int id){
    this->id = id;
}

string Store::getName(){
    return naam;
}

void Store::setName(string name){
    this->naam = naam;
}

string Store::getTelephone(){
    return telephone;
}

void Store:setTelephone(string telephone){
    this->telephone = telephone;
}

string Store::getBtwNumber()
{
    return btwNumber;
}

void Store::setBtwNumber(string btwNumber){
    btwNumber = btwNumber;
}

string Store::getAdress(){
    return adress;
}

void Store::setAdress(string adress){
    this->adress = adress;
}

string Store::toString(){
    stringstream s;
    s << "Id: " << id << endl;
    s << "Naam: " << name << endl;
    s << "Adres: " << adress << endl;
    s << "Telefoonnummer: " << telephone << endl;
    s << "BTWnummer: " << btwNumber << endl;

    return s.str();
}



int _tmain(int argc, _TCHAR* argv[])
{

    Store *test = new Store (4, "Test", "test", "test", "test");

    test->toString();
    system("Pause");


    return 0;
}

2 个答案:

答案 0 :(得分:3)

您的构造函数是反转的:您将成员变量分配给构造函数参数,反之亦然。

nameS = name;

应该是

name = nameS;

等等

答案 1 :(得分:2)

方法toString确实有效,但它不会神奇地决定将其返回值输出到屏幕。你必须自己做:

std::cout << test->toString() << std::endl;

您需要在cpp文件的顶部添加#include <iostream>