內我收到的功課做節目,而無需使用構造函數,所以這是我的代碼鑄造,我有兩個類:誤差在C++中,背景
class Base {
protected:
int var;
public:
Base(int var = 0);
Base(const Base&);
Base& operator=(const Base&);
virtual ~Base(){};
virtual void foo();
void foo() const;
operator int();
};
class Derived: public Base {
public:
Derived(int var): Base(var){};
Derived(const Base&);
Derived& Derived::operator=(const Base& base);
~Derived(){};
virtual void foo();
};
這裏有兩個我的衍生功能:
Derived::Derived(const Base& base){
if (this != &base){
var=base.var;
}
}
Derived& Derived::operator=(const Base& base){
if (this != &base){
var=base.var;
}
return *this;
}
但我有一個錯誤within context
當我把這些行
Base base(5);
Base *pderived = new Derived(base); //this row works perfectly
Derived derived = *pderived; // I think the problem is here
感謝您的幫助
「在上下文中」僅爲錯誤消息的*部分*。這條線上面應該有東西告訴你實際的錯誤是什麼,以及該行下面的東西告訴你上下文(即行號和函數名)。 – 2010-06-15 20:35:54
你知道嗎?Derived derived = * pderived;調用構造函數Derived :: Derived(const Base&base)'? – 2010-06-15 20:44:22
這是由任何機會[非標量類型請求](http://stackoverflow.com/questions/3046463/non-scalar-type-requested/3046537#3046537)? – Troubadour 2010-06-15 20:45:41