【发布时间】:2015-10-20 15:43:15
【问题描述】:
我有以下两个类:
class MyClass
{
friend ostream& operator<<(ostream&, const MyClass& );
friend int operator+(const MyClass &, const MyClass &);
public:
MyClass(const int );
MyClass(const int, const int);
MyClass (const MyClass *, const MyClass *);
~MyClass();
MyClass& operator++();
void printValue();
void setValue(int);
int getValue() const;
private:
int value;
};
class DevClass : public MyClass
{
public:
DevClass(const int, const char *s);
char getId() const;
void setId(char *s);
private:
char id;
};
operator++的实现如下:
MyClass& MyClass::operator++()
{
this->value +=1;
return *this;
}
现在,如果我将运算符与派生类一起使用:
DevClass *dev=new DevClass(10,'c');
++dev;
“dev”似乎指向内存中的其他地方。为什么 ?为什么朋友运算符不被继承?这是一个课堂练习,所以我需要解决这个问题。
谢谢!。
【问题讨论】:
-
DevClass dev = new DevClass(10, 'c'):你为什么在这里使用new?你为什么使用new而不是将结果分配给指针(即DevClass*? -
这是一个课堂练习约束。
-
DevClass dev=new DevClass(10,'c');应该是编译器错误,因为您试图将指针分配给非指针。 -
复制粘贴错误,代码已打补丁。
-
@Pandemia000 正如其他人所提到的,由于
dev是一个指针(即DevClass*),您需要取消引用它才能使用增量成员函数++(*dev)。
标签: c++