C++ 类的2D向量在访问函数时出错

C++ 类的2D向量在访问函数时出错,c++,class,vector,2d-vector,C++,Class,Vector,2d Vector,在将我的2D数组转换为2D向量后(由于我听到的所有赞扬),我的程序几乎立即中断,经过一些测试,当程序尝试使用向量元素执行函数时,似乎会发生这种情况。我制作了一些简化的源代码,其中也有错误: #include <iostream> #include <vector> using namespace std; class Dog { private: int mass, size; public: void setMass(

在将我的2D数组转换为2D向量后(由于我听到的所有赞扬),我的程序几乎立即中断,经过一些测试,当程序尝试使用向量元素执行函数时,似乎会发生这种情况。我制作了一些简化的源代码,其中也有错误:

#include <iostream>
#include <vector>

using namespace std;

class Dog
{
    private:
        int mass, size;
    public:
        void setMass(int);
        void setSize(int);

        int getMass();
        int getSize();
};

void Dog::setMass(int newMass) {mass = newMass;}
void Dog::setSize(int newSize) {size = newSize;}

int Dog::getMass() {return mass;}
int Dog::getSize() {return size;}

int main() 
{
    vector <vector<Dog*> > dogs(10, vector<Dog*> (10));

    dogs[0][0]->setMass(10);
    dogs[0][0]->setSize(5);
    return 0;
}
#包括
#包括
使用名称空间std;
班犬
{
私人:
int质量、大小;
公众:
空隙集质量(int);
无效设置大小(int);
int getMass();
int getSize();
};
void Dog::setMass(int newMass){mass=newMass;}
void Dog::setSize(int newSize){size=newSize;}
int Dog::getMass(){return mass;}
int Dog::getSize(){return size;}
int main()
{
病媒狗(10只,病媒狗(10只));
狗[0][0]->毛重(10);
狗[0][0]->setSize(5);
返回0;
}

我还有一个到Ideone的链接,因此更容易测试(我测试代码的地方)

您有一个指向Dog的2D向量指针,但没有分配任何
Dog
对象。初始化2D向量时,指针将初始化为
nullptr
。取消引用
nullptr
是未定义的行为

除非你有很好的理由不这样做,否则我建议你只需要一个2D向量的

vector<vector<Dog>> dogs(10, vector<Dog>(10));

你得到了什么错误?@DanielBocksteger根据Ideone的说法,我得到了一个运行时错误,代码::blocks除了返回一个很长的数字外什么也没说。我使用指针的原因主要是因为互联网告诉我这样做,而在某个地方它说这样做行不通,你必须使用指针。但谢谢你指出我容易上当受骗internet@Orfby现在互联网告诉你不要使用它们!现在怎么办P@BartekBanachewicz你是说互联网现在才告诉我这个?从我的经验来看,互联网在任何事情上都不一致!我不同意互联网不符合自身的观点。
dogs[0][0].setMass(10);
dogs[0][0].setSize(5);