這僅僅是一個代碼片段解釋類層次結構,而不是實際問題的代碼基地的拷貝構造函數的類不應該叫
class A
{};
class B : public class C
{};
class C : public NocopyClass // constructors are private in Nocopy class
{};
template<typename T1, typename T2>
class D
public:
T1 _t1;
T2 _t2;
D(T1& t1, T2& t2) : _t1(t1),_t2(t2) {}
{
};
class E: public class D<A,B>
{
E(const& a,const& b) : D<A,B>(a,b) {}
};
調用函數:
A objA;
B objB;
E objE(objA,objB);
從調用程序我想要將A的對象和B的對象傳遞給E類 這裏在E中定義的複製構造函數被調用,並且A和B的對象被複制,然後調用B類的複製構造函數,直到超級基類NocopyClass拷貝構造函數, 哪一個不允許複製對象。
我該如何修改調用函數,以便不調用基類構造函數? 有什麼辦法嗎?
繞過基類複製構造函數是不可能的,也是不需要的。未初始化的基類會有什麼用處?這些類可能有很好的理由是不可複製的...... – Unimportant
你能提供*真實*代碼嗎? 'E(const&a,const&b)'不是一件事情。這裏沒有任何地方叫做E的拷貝構造函數。 – Barry