学海舟舟_林 2017-11-04 15:24 采纳率: 0%
浏览 661
已采纳

C++关于类的一个小问题,怎么改,急~~~

图片说明#include
using namespace std;
enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};

class CPU{ //CPU类

private:
CPU_Rank rank;
int frequency;
float voltage;

public:
void run();
void stop();

CPU(CPU_Rank a,int b,float c){
    rank=a;
    cout<<"构造成员rank"<<endl;
    frequency=b;
    cout<<"构造成员frequency"<<endl;
    voltage=c;
    cout<<"构造成员voltage"<<endl;
}
CPU();

};

void CPU::run(){
cout<<"成功构造一个CPU对象"<<endl;
}
void CPU::stop(){
cout<<"程序结束"<<endl;
system("pause");
}

class RAM{ //RAM类
public:
RAM(int a,int b,double c){
frequency=a;
size=b;
delay=c;
}
RAM();
private:
int frequency;
int size;
double delay;

};

class CDROM{ //CDROM类
public:
CDROM(int a,int b){
type=a;
speed=b;
}
CDROM();
private:
int type;
int speed;
};

class Computer{ //Computer类
public:
void run();
void stop();
Computer(CPU a,RAM b,CDROM c){
cpu=a;
ram=b;
cdrom=c;
}
private:
CPU cpu;
RAM ram;
CDROM cdrom;
};

void Computer::run(){
cout<<"构造了一个Computer对象"<<endl;
}

void Computer::stop(){
cout<<"停止..."<<endl;
system("pause");
}

int main(int argc,char *argv[]){
CPU cpu(P2,400,5);
RAM ram(1,2,3);
CDROM cdrom(4,7);
Computer computer(cpu,ram,cdrom);
computer.run();
computer.stop();
return 0;
}

  • 写回答

1条回答

  • 造轮使者 2017-11-04 15:44
    关注

    1.楼主的代码好像头文件没粘贴上来,推测是
    2.提示没有找到构造函数的符号,是因为楼主在程序中把默认无参数的构造函数声明了没有给实现。链接器就会报错说找不到实现在哪。修改后参考代码:

    #include <iostream>         //没写 
    using namespace std;
    enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7};
    class CPU { //CPU类
        private:
            CPU_Rank rank;
            int frequency;
            float voltage;
        public:
            void run();
            void stop();
    
    CPU(CPU_Rank a,int b,float c) {
                rank=a;
                cout<<"构造成员rank"<<endl;
                frequency=b;
                cout<<"构造成员frequency"<<endl;
                voltage=c;
                cout<<"构造成员voltage"<<endl;
            }
            CPU() {     }
            //写出了默认构造函数名,就要给个空的实现
    };
    void CPU::run() {
        cout<<"成功构造一个CPU对象"<<endl;
    }
    void CPU::stop() {
        cout<<"程序结束"<<endl;
        system("pause");
    }
    class RAM { //RAM类
        public:
            RAM(int a,int b,double c) {
                frequency=a;
                size=b;
                delay=c;
            }
            RAM() {     }
            //写出了默认构造函数名,就要给个空的实现 
        private:
            int frequency;
            int size;
            double delay;
    };
    class CDROM { //CDROM类
        public:
            CDROM(int a,int b) {
                type=a;
                speed=b;
            }
            CDROM() {       }
            //写出了默认构造函数名,就要给个空的实现
        private:
            int type;
            int speed;
    };
    class Computer { //Computer类
        public:
            void run();
            void stop();
            Computer(CPU a,RAM b,CDROM c) {
                cpu=a;
                ram=b;
                cdrom=c;
            }
        private:
            CPU cpu;
            RAM ram;
            CDROM cdrom;
    };
    void Computer::run() {
        cout<<"构造了一个Computer对象"<<endl;
    }
    void Computer::stop() {
        cout<<"停止..."<<endl;
        system("pause");
    }
    int main(int argc,char *argv[]) {
        CPU cpu(P2,400,5);
        RAM ram(1,2,3);
        CDROM cdrom(4,7);
        Computer computer(cpu,ram,cdrom);
        computer.run();
        computer.stop();
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮