# include "stdafx.h"
# include <iostream>
#include <ctype.h>
using namespace std;
class a
{
protected:
int d;
public:
virtual void assign(int A) = 0;
int get();
};
class b : a
{
char* n;
public:
b()
{
n=NULL;
}
virtual ~b()
{
delete n;
}
void assign(int A)
{
d=A;
}
void assignchar(char *c)
{
n=c;
}
int get()
{
return d;
}
char* getchart()
{
return n;
}
};
class c : b
{
b *pB;
int e;
public:
c()
{
pB=new b();
}
~c()
{
delete pB;
}
void assign(int A)
{
e=A;
pB->assign(A);
}
int get()
{
return e;
}
b* getp()
{
return pB;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
c *pC=new c();
pC->assign(10);
b *p=pC->getp();
p->assignchar("a");
char *abc=p->getchart();
delete pC;
cout<<*abc<<endl;
getchar();
}
我是C++的noob,正在嘗試何時達到這一點。我不明白爲什麼我不斷收到來自VS2010的內存損壞消息。我試圖通過將其分解成更小的位來複制更高級別的問題,任何幫助將不勝感激。執行我的代碼時出現內存損壞
是不是傳遞一個std :: string到assignchar()函數相當於傳遞該字符串的第一個字符? –
我想你會希望n也是一個std :: string。把它看作是一個封裝的字符串類型..就是這樣。如果你想處理char *,那麼不需要複製指針,你需要strdup()。 – gbjbaanb