0
class A
{
public:
    string  name;

    float   length;

    float   weight;

    bool    isEnabled;
};

当我在push_back()这个类的向量上做时,它第一次工作,但在随后的push_back()调用中没有。可能是因为字符串成员吗?如果是这样,为什么?

4

2 回答 2

1

我试过你的代码。

vector<Aclass>  aClass;
aClass.push_back(Aclass("John Doe ", 6.2 , 220  , true) );
aClass.push_back(Aclass("John Doe2 ", 6.2 , 220  , true) );
aClass.push_back(Aclass("John Doe3 ", 6.2 , 220  , true) );
aClass.push_back(Aclass("John Doe4 ", 6.2 , 220  , true) );

但无法复制您的错误。

此代码推回四次。

#include <iostream>
#include <vector>
#include <string>
using namespace std;

class Aclass
{
public:
    string  name;
    double   length;
    double   weight;
    bool    isEnabled;

    Aclass(){}
    ~Aclass(){}

    Aclass(string  _name, double   _length, double   _weight, bool    _isEnabled )  //constructor
    {
        name = _name;
        length = _length;
        weight = _weight;
        isEnabled = _isEnabled;

        cout<<" \n";
        cout<<"Name   : "<<name<<" \n";
        cout<<"length : "<<length<<" \n";
        cout<<"weight : "<<weight<<" \n";
        cout<<" \n";
    }



};



int main()
{ 

    vector<Aclass>  aClass;
    aClass.push_back(Aclass("John Doe ", 6.2 , 220  , true) );
    aClass.push_back(Aclass("John Doe2 ", 6.2 , 220  , true) );
    aClass.push_back(Aclass("John Doe3 ", 6.2 , 220  , true) );
    aClass.push_back(Aclass("John Doe4 ", 6.2 , 220  , true) );

    cout<<" \n";


return 0;
}

输出 :

Name   : John Doe
length : 6.2
weight : 220


Name   : John Doe2
length : 6.2
weight : 220


Name   : John Doe3
length : 6.2
weight : 220


Name   : John Doe4
length : 6.2
weight : 220


Press any key to continue
于 2012-01-03T16:12:09.803 回答
-3

为什么会string与它有任何关系?

你做过#include <string>吗?你还没有提到你是否class有一个复制构造函数。它是这样的:

class A {
public:
        A() //default constructor
        A(const A&) //copy constructor
};

默认情况下,c++ 将复制所有公共成员,但您需要有一个复制构造函数才能使用 STL 容器和push_back()

于 2012-01-03T14:25:09.330 回答