首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个种是哪地方定义错了,有解释看不懂。

2013-08-16 
这个类是哪地方定义错了,有解释看不懂。。问题如下(红色的就是问题,编译不通过):#include iostreamusing n

这个类是哪地方定义错了,有解释看不懂。。
问题如下(红色的就是问题,编译不通过):

#include <iostream>

using namespace std;

struct base {
base(string s):basename(s) { }
string name() { return basename;}
virtual void print(ostream &os) { os<<basename; }//1.没有与操作符<<匹配的运算符
private:
string basename;
};
struct derived:public base
{
derived(string s2,int n):base(s2),mem(n) { }
void print(){ print(ostream &os);os<<" "<<mem;}//2.ostrea,不允许使用类型名
private:
int mem;
};

int main()
{
base b("English");
derived d("English",6);
return 0;
}

[解决办法]
 virtual void print(ostream &os) { os<<basename; }//1.没有与操作符<<匹配的运算符
-------------------------------------------------------
#include <string>

void print(){ print(ostream &os);os<<" "<<mem;}//2.ostrea,不允许使用类型名
--------------------
void print(ostream &os) {base::print(os); os << " " << men;}  //显式调用基类的print打印 basename

[解决办法]
void?print(){?print(ostream?&os);os<<"?"<<mem;}//2.ostrea,不允许使用类型名
?print(ostream?&os)调用错了,如果是base的?print(ostream?&os)就要
base b;
b.print(ostream?os);
[解决办法]

ostream& operator << (ostream& os, const derived& d)  
{  
    os << "第一个 " << f.one << "第二个 " << f.two << endl;  
    return os;  
}  


重载下输出

另外 你这个类 写的,特别扭, 用class吧!不要走不寻常路!
类的成员

//string basename; 改成
  char basename[36];


热点排行