2 つの単純なクラスを定義しました。最初のクラス (A) には、int メンバー (i) を含む 2 番目のクラス (B) のオブジェクトへのポインター (b_ptr) が含まれます。最初のクラスのオブジェクトを作成しましたが、ポインターのオブジェクトに含まれる int を返そうとしています。
最初はコードをコンパイルすることさえできませんでしたが、その後、int A::returnInt()
定義を移動して定義の後に配置しましたclass B
。コンパイルできるようになりましたが、への呼び出しを出力すると、膨大な数 (実行するたびに変化します) が表示されreturnInt()
ます。
どんな助けでも大歓迎です!
// HelloWorld.cpp : main project file.
#include "stdafx.h";
using namespace System;
#include <iostream>
#include <string>
#include <vector>
using namespace std;
using std::vector;
using std::cout;
using std::endl;
using std::string;
class B;
class A {
public:
A() = default;
B* b_ptr;
int returnInt();
};
class B {
public:
B() : i(1){};
A a;
int i;
};
int A::returnInt() { return (b_ptr->i); };
int main()
{
A myClass;
cout << myClass.returnInt() << endl;
}