首页 > 解决方案 > 构造函数c ++中的setter函数

问题描述

我正在尝试在构造函数中使用 setter 函数,这是我以前从未做过的。它给了我以下错误:

[Error] no match for call to '(Laptop) (const char [5], const char [3], int, int)' 那么我也需要编写setter函数吗?我的意思是在构造函数之外?我的意思是这样

void Laptop::setBrand(char a[])
   {   
        brand=a;}

我认为错误出现在第二个构造函数中,它需要四个参数,但我找不到它。

这是代码:

#include <iostream>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
using namespace std;
class Laptop{
private:
        char brand[10];
        char processor[10];
        int ram;
        int hardDrive;
public:
        void setBrand(char Bra[]);
        void setProcessor(char Pro[]);
        void setRam(int Ram);
        void setHardDrive(int HDrive);


        char *getBrand();
        char *getProcessor();
        int  getRam();
        int getHardDrive();





        Laptop();
        Laptop(char [],char [],int ,int );                    
};

Laptop::Laptop(){

    cout<<"Default constructor called...\n";
    strcpy(brand,"None");
    strcpy(processor,"None);
    ram=0;
    hardDrive=0;
}

我认为错误在构造函数中

 Laptop::Laptop(char Bra[],char Pro[],int Ram,int HDrive) 
   {
    cout<<"Parameterized constructor called...\n"; 
    setBrand(Bra );
    setProcessor(Pro );
    setRam(Ram);
    setHardDrive(HDrive);        
}
char *Laptop::getBrand()
{
    return brand;
}
char *Laptop::getProcessor()
{
  return processor;
}
int Laptop::getRam()
{
   return ram;
}
int Laptop::getHardDrive()
{
    return hardDrive;
}
int main()
{
    Laptop laptopObj1;
    Laptop laptopobj1("Dell","i5",4,500);
    cout<<"Brand :"<<laptopObj1.getBrand()<<"\n";

    cout<<"Processor :"<<laptopObj1.getProcessor()<<"\n";



    cout<<"Ram :"<<laptopObj1.getRam()<<"\n";



    cout<<"HardDrive :"<<laptopObj1.getHardDrive()<<"\n";

    cout<<"Brand :"<<laptopObj2.getBrand()<<"\n";

    cout<<"Processor :"<<laptopObj2.getProcessor()<<"\n";

    cout<<"Ram :"<<laptopObj2.getRam()<<"\n";

    cout<<"HardDrive :"<<laptopObj2.getHardDrive()<<"\n";

}

标签: c++constructor

解决方案


您将两个 const char*作为参数传递,因此您应该更改它:

Laptop::Laptop(char Bra[],char Pro[],int Ram,int HDrive)

对此:

Laptop::Laptop(const char* ,const char* ,int Ram,int HDrive)


推荐阅读