中午吃饭组里一个同事问的,折腾的一下午还是没搞定,牛皮吹大了,请教下大家如何解决,谢谢各位
基本需求是两个命名空间存在相同的一个类,TA/TB 以示区别
怎么将命令空间 A 中类 TA 的对象作为命名空间 B 中类 TB 构造函数的参数传入并访问其中的字段?
#include "stdafx.h"
#include <iostream>
using namespace std;
class B::TB;
namespace A
{
class TA
{
private:
char *m_pstr;
public:
TA(const char *cstr)
{
if (cstr == nullptr)
{
m_pstr = nullptr;
}
else
{
int len = strlen(cstr);
m_pstr = new (nothrow)char[len+1];
memcpy(m_pstr, cstr, len);
m_pstr[len] = '\0';
}
}
friend class B::TB;
};
}
namespace B
{
class TB
{
private:
char *m_pstr;
public:
TB(const char *cstr)
{
if (cstr == nullptr)
{
m_pstr = nullptr;
}
else
{
int len = strlen(cstr);
m_pstr = new (nothrow)char[len+1];
memcpy(m_pstr, cstr, len);
m_pstr[len] = '\0';
}
}
//friend class A::TA;
TB(const A::TA& ta)
{
this->m_pstr = ta.m_pstr;
}
~TB()
{
if (m_pstr != nullptr)
{
delete []m_pstr;
m_pstr = nullptr;
}
}
};
}
int main(int argc, char* argv[])
{
A::TA a("This is A");
B::TB b = a;
return 0;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.