注册 登录
编程论坛 C++教室

帮我改一下错好吗?C++语言语法问题。。

thlgood 发布于 2011-10-07 21:58, 855 次点击
程序代码:

#include <iostream>
#include <string.h>
using namespace std;

class books
{
    private:
        char author[10];
        float price;
    public:
        books(char *au, float pri)
        {
            strcpy(author, au);
            price = pri;
        }
        void showprice()
        {
            cout << price <<endl;
        }
};

class m:private books
{
    private:
        int id;
    public:
        m(char *au, float pri)
        {
            books(char *au, float pri);
        }
        void setid(int x)
        {
            id = x;
        }
        void showid()
        {
            cout << id << endl;
        }
};

int main()
{
    m abc("Yes", 2.5);
    abc.setid(10);
//    abc.showprice();
    abc.showid();
    return 0;
}
7 回复
#2
thlgood2011-10-07 21:58
不熟悉C++语法。。。
#3
陈便往2011-10-07 22:14
请问一下楼主,你想干嘛?这个程序很多错误,首先你的类的写法就错啦,另外我很不理解你想干嘛,要是想输出价格作者,只要一个类,就行啊额不过你的得改改,。。。而且在主函数里你在干嘛.?建议你去看看课本。。
#4
naruto012011-10-07 22:28
为了在派生类中调用基类带参数的构造函数吗?
        m(char *au, float pri):books(au, pri);
        {      
        }
#5
czsbc2011-10-07 22:29
m(char *au, float pri) : books(au,pri) { }
#6
naruto012011-10-07 22:32
注释掉的
//    abc.showprice();
可以用public继承
#7
lz10919149992011-10-07 22:46
程序代码:
m(char *au, float pri)
{
    books(char *au, float pri);
}

楼主以前是学Java的么?
应该这样调用父类带参构造:
m(char *au, float pri) : books(au, pri) {}
#8
thlgood2011-10-08 10:21
@3楼:我是想学继承与派生而已。。。程序的目的不重要了
@7楼:楼主以前是学C语言的。。。
1