凉风习习 发表于 2006-5-26 19:12

C++急问!!

请问下面这个程序哪里出错了啊??急啊,谢谢啊

#include <iostream>
#include <cstring>
using namespace std;
class TwoDShape {
   double width;
double height;
char name;
public:
TwoDShape(double w, double h, char *n) {
    width = w;
    height = h;
    strcpy(name, n);
}
double getWidth() { return width; }
double getHeight() { return height; }
void setWidth(double w) { width = w; }
void setHeight(double h) { height = h; }
char *getname {return name;}

};
class Triangle : public TwoDShape {
char style; // now private
public:

Triangle(char *str, double w,
         double h) : TwoDShape(w, h, "triangle") {
    strcpy(style, str);
}
double area() {
    return getWidth() * getHeight() / 2;
}


void style() {
    cout<<"style is "<<style<<"\n";
}
};

int main()
{
      Triangle t("right", 8.0, 12.0);
      cout<<t.style()<<t.area();
      return 0;
}

凉风习习 发表于 2006-5-27 17:28

有谁救救我啊!◎!◎~

hjack 发表于 2006-5-27 18:41

i think you should paste your errors first.

hjack 发表于 2006-5-27 18:45

18行
char *getname {return name;}

少了()括号。

hjack 发表于 2006-5-27 18:56

s.cc:36: error: declaration of `void Triangle::style()'
s.cc:22: error: conflicts with previous declaration `char Triangle::style'

powerwind 发表于 2006-5-27 19:59

楼主可以写一点编译一点,错误就好找啦!

我来也 发表于 2006-5-28 00:25

看不懂!!!

sasadong 发表于 2006-5-30 03:18

hjack 你应该说详细一点啊,呵呵。我们学校有很多初学者。失眠,唉。

iptton 发表于 2006-5-30 09:04

调试ing...

[ 本帖最后由 iptton 于 2006-5-30 09:57 编辑 ]

hjack 发表于 2006-5-30 10:13

OK,

错误1:在4楼已说了,少了个括号。

错误2:变量style[] 和 方法void style() 有命名冲突。建议把方法style()改为getStyle()。

错误3:在main()中,cout<<t.style()<<t.area();会出错,因为t.style()里面也是一个cout<<操作,而是不返回一个变量值给main里的cout输出。

改正建议:
1.添上括号,
2.把void style()改为void getStyle()
3.在main里直接用t.getStyle()访问,输出style.

hjack 发表于 2006-5-30 10:27

但是这样改之后在vc里可以编译通过。但在gcc里却不行。目前还想不明白为什么。

sasadong 发表于 2006-5-30 18:24

原帖由 hjack 于 2006-5-30 10:27 发表
但是这样改之后在vc里可以编译通过。但在gcc里却不行。目前还想不明白为什么。

gcc里面可没有vc的字符串类。
页: [1]
查看完整版本: C++急问!!