ソースが表示されませんとは何かが知りたい
タイトル通りなのですが普通に実行してコンソール画面が表示されエンターキーで閉じると
場所や行数が表示されず「読み取りアクセス違反が発生しました」と表示され困っています教えてくれますでしょうか?
1,ソースが利用できませんとは何が言いたのでしょうか?
2,初学者のため何がどう違うのか検討がついません。教えてくれますでしょうか?
環境:visual studio 2017, OS : windows10
///////////////int main()部/////////////////////
#include <iostream>
#include "conio.h"
#include "Header.h"
using namespace std;
int main() {
C x(4,"AAA");
D y(5,"B",5,"BB");
y = x;
//cout << a;
y.view();
_getch();
return 0;
}
///////////////Header.h////////////////////
#ifndef ___Header_h
#define ___Header_H
#include <string>
using namespace std;
class C {
private:
protected:
int *vec;
string name;
int num;
public:
C(int n, string str);//コンストラクタ
void view()const;/*画面表示*/
C(const C& x);/*コピーコンストラクタ*/
C& operator = (const C& x);/*代入operator*/
int g_num()const { return num; }
string g_name()const { return name; }
int g_vec(int i)const
{
return vec[i];
}
};
class D : public C {
private:
protected:
int *dvec;
string dname;
int dnum;
public:
D(int n, string str,int nn,string sstr);//コンストラクタ
void view()const;//画面表示
D& operator = (const D& x);//代入operator
D& operator = (const C& x);//代入operator D = C
};
#endif
//////////Source.cpp部/////////////////////////
#include "Header.h"
#include <iostream>
using namespace std;
C::C(int n, string str):num(n),name(str),vec(new int[n])
{
for (int i = 0; i < num; i++)
{
vec[i] = i;
}
}
void C::view()const
{
cout << "class C"<<"\n";
cout << "name: " << name<<"\n";
for (int i = 0; i < num; i++)
{
cout << "["<<i<<"]: "<< vec[i] << "\n";
}
cout << "\n\n";
}
C::C(const C& x)/*コピーコンストラクタ*/
{
if (this == &x)
{
num = 0;
vec = NULL;
}
else {
if (num != x.num)
{
num = x.num;
delete[] vec;
vec = new int[num];
name = x.name;
}
for (int i = 0; i < num; i++)
{
vec[i] = x.vec[i];
}
}
}
C& C::operator = (const C& x)/*代入operator*/
{
if (this != &x)
{
if (num != x.num)
{
num = x.num;
delete[] vec;
vec = new int[num];
name = x.name;
}
for (int i = 0; i < num; i++)
{
vec[i] = x.vec[i];
}
}
return *this;
}
/*--------------------派生クラス*/
D::D(int n, string str,int nn,string sstr) : dnum(n),dname(str),dvec(new int[dnum]),
C(nn,sstr)
{
for (int i = 0; i < dnum; i++)
{
dvec[i] = i;
}
}
void D::view()const
{
//cout << dnum;
cout << "class D" << "\n";
cout << "name: " << dname << "\n";
for (int i = 0; i < dnum; i++)
{
cout << "[" << i << "]: " << dvec[i] << "\n";
}
cout << "\n\n";
cout << "class C" << "\n";
cout << "name: " << C::name << "\n";
for (int i = 0; i < C::num; i++)
{
cout << "[" << i << "]: " << C::vec[i] << "\n";
}
}
D& D::operator = (const D& x)/*代入operator*/
{
if (this != &x)
{
if (dnum != x.dnum)
{
dnum = x.dnum;
delete[] vec;
vec = new int[dnum];
dname = x.name;
}
for (int i = 0; i < dnum; i++)
{
vec[i] = x.vec[i];
}
}
return *this;
}
D& D::operator = (const C& x)//代入operator D = C
{
if (this != &x)
{
cout << "代入operator D = C\n";
C::num = x.g_num();
C::name = x.g_name();
delete[] C::vec;
C::vec = new int[C::num];
}
for (int i = 0; i < C::num; i++)
{
C::vec[i] = x.g_vec(i);
//cout << C::vec[i]<<"\n";
}
return *this;
}