###前提・実現したいこと
C++でゲッター・セッターを下記のように記入しましたが、コンパイルエラーが発生し解決できません。推測するに、thisポインタとstrcpyの使い方が分かっていないので、合わせて説明して頂けると幸いです。この前までJavaを扱っていたので、下記のようなソースコードを作成しました。
###発生している問題・エラーメッセージ
Main.cpp:37:16: error: array type 'char [80]' is not assignable
this->name = name;
~~~~~~~~~~ ^
Main.cpp:41:12: error: cannot initialize return object of type 'char' with an lvalue of type 'char [80]'
return this->name;
^~~~~~~~~~
2 errors generated.
###ソースコード
ヘッダーファイル : Worker.h
class Worker{
int number;
char name[80];
double salary;
public:
Worker();
~Worker();
Worker(int number, char* name, double salary);
void ShowData();
void setNumber(int number);
int getNumber();
void setName(char* name);
char getName();
void setSalary(double salary);
double getSalary();
};
メイン文:
#include <iostream>
#include <string.h>
#include "Worker.h"
using namespace std;
Worker::Worker(){
number = 0;
strcpy(this->name, name);
salary = 0;
}
Worker::Worker(int number, char* name, double salary){
this->number = number;
strcpy(this->name, name);
this->salary = salary;
}
void Worker::ShowData(){
cout << "number = " << number << "\n";
cout << "name = " << name << "\n";
cout << "number = " << salary << "\n";
}
void Worker::setNumber(int number){
this->number = number;
}
int Worker::getNumber(){
return this->number;
}
void Worker::setName(char* name){
this->name = name;
}
char Worker::getName(){
return this->name;
}
void Worker::setSalary(double salary){
this->salary = salary;
}
double Worker::getSalary(){
return this-> salary;
}
int main(void){
Worker w1;
return 0;
}
###補足情報(言語/FW/ツール等のバージョンなど)
paiza.io
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/19 04:14