重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

strcpyでnamに文字をコピーしてそれを表示させたいのですが なかなか出来ません。
strcpyはコンストラクタ内が決まりです。
namを返すメンバ関数を作りたいのですが色々エラーが出てしまいます。
#include <iostream>
#include <string.h>

using namespace std;

class aaa{
private:
char nam[100];
public:
aaa();
char name();
};
aaa::aaa(){
strcpy(nam,"あいうえお");
}

char aaa::name(){
return nam;
}

int main()
{
aaa a;
cout<<a.name()<<endl;
return 0;
}

A 回答 (2件)

まず、「エラーの意味がわからないので、それらしくソースを直してみる」ということは、絶対にやってはならないことです。


こういう癖をつけたプログラマは、「なんかわからないけど動く」という、本質的な部分にバグを含んだプログラムを作って、周りの皆さんに迷惑をかけます。

あと、提示されたソースからは、
「strcpyの宣言云々」というエラーは出ないはずです。
既に、「いろいろなエラー」がでて、あちこち適当に直した後なのだろうと思います。

そもそも char :::name() には元々引数がない(関数に渡す情報がない)のに、char *name(char *nam[]); と引数をつけてみるというのも、やってはいけないことです。

さて、 return nam というのが、「本当に意図するところ」なら、nam の型(または、それを変換可能な型)が関数の型になります。

nam を返すのですね?
nam は、char ではなくて、char の配列です。

で、これまでの練習問題を見直して、char の配列(それこそ、名前とか)を返す関数が、どういう型になっているのかを確認してみてください。
    • good
    • 0
この回答へのお礼

回答遅くなってすみません
なんとか出来ました

本当に助かりました。
これからは気をつけていきます!!

お礼日時:2015/07/26 03:16

> 色々エラーが出てしまいます。



具体的にはどんな?
そして、その内容を理解しようとしましたか?


少なくとも、 戻り値がchar だと宣言した関数から、 charの配列(の先頭要素へのポインタ) を return しようとすれば、エラーになるのは当然の結果です。
    • good
    • 0
この回答へのお礼

strcpyの宣言を確認してください
'return' : 'char [100]' から 'char' に変換できません。
このようなエラーが出ました。

すみません エラー理解できてないです
関数のプロトタイプ宣言の部分をchar *name(char *nam[]);このように書き換えて、関数の部分を
char aaa::name(char *nam[]){
return nam;
}
と書いたりしたのですが、構文エラーみたいで...

お礼日時:2015/07/20 10:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!