Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么你不能给我一个错误的整数?_C++ - Fatal编程技术网

C++ 为什么你不能给我一个错误的整数?

C++ 为什么你不能给我一个错误的整数?,c++,C++,当我在EclipseCDT中构建和运行此代码时,我希望它打印1。而是打印-1992206527。为什么会这样 这是我的密码 A.h A.cpp B.cpp main.cpp 要使其打印1,必须初始化B::obj。下面是一个B.cpp,obj已正确初始化/解除分配 #include "A.h" #include "B.h" B::B() : obj(new A) {} B::~B() { delete obj;} int B::run(){ obj->printNum();

当我在EclipseCDT中构建和运行此代码时,我希望它打印
1
。而是打印
-1992206527
。为什么会这样

这是我的密码

A.h A.cpp B.cpp main.cpp
要使其打印1,必须初始化B::obj。下面是一个B.cpp,obj已正确初始化/解除分配

#include "A.h"
#include "B.h"

B::B() : obj(new A) {}

B::~B() { delete obj;}

int B::run(){
    obj->printNum();
    return 0;
}

或者,您可以将obj设置为对象类型A(即将obj声明为
A obj;
),而不是将其设置为指向类型A的对象的指针。这需要将
A.h
包含在
B.h

中,您尚未初始化
B::obj
。。。。你为什么想让它成为一个指针?@juanchopanza我该怎么做?谢谢,为了简单起见,我想我会坚持在
B.h
中包含
a.h
#include <iostream>
#include "A.h"

A::A() :
    a(1)
{

}

A::~A(){}

void A::printNum(){
    std::cout << a << std::endl;
}
#ifndef B_H_
#define B_H_

class A;

class B {
private:
    A*  obj;
public:
    B();
    ~B();

    int run();
};

#endif
#include "A.h"
#include "B.h"

B::B() {}

B::~B() {}

int B::run(){
    obj->printNum();
    return 0;
}
#include "B.h"

int main(int argc, char **argv) {
    B b;
    return b.run();
}
#include "A.h"
#include "B.h"

B::B() : obj(new A) {}

B::~B() { delete obj;}

int B::run(){
    obj->printNum();
    return 0;
}