質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

1174閲覧

C++コーディングのエラーについて

hkefka_moxon

総合スコア8

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/12/24 07:27

編集2016/12/24 07:29

こちらのコードのエラーの原因がわかりません。分かる方がいればお教え頂きたいです。よろしくお願いします。
ちなみにこちら林晴比古「明快入門C++ シニア編」の25章のデストラクタのコードの説明のサンプルコードです。

C++

1#include <iostream> 2#include <fstream> 3#include <string> 4#include <cctype> 5using namespace std; 6 7class Mystring{ 8public: 9 char* text; 10public: 11 Mystring(char* ss); //コンストラクタ宣言 12 Mystring(const Mystring &obj); //コピーコンストラクタ 13 ~Mystring(); //デストラクタ宣言 14 void disp() { cout << "text = " << text << '\n';} 15}; 16 17Mystring::Mystring(char* ss) //コンストラクタ本体 18{ 19 text = new char[strlen(obj.text)+1]; //メモリ確保 / +1は[\0]の分 20 strcpy(text,ss); 21} 22Mystring::Mystring(const Mystring &obj) //コピーコンストラクタ本体 23{ 24 text = new char[strlen(obj.text)+1]; //新しくメモリ確保 25 strcpy(text,obj.text); //objの文字列をコピー 26} 27Mystring::~Mystring() //デストラクタ本体 28{ 29 delete[] text; //メモリ開放 30} 31int main() 32{ 33 Mystring ss1("abcde"); 34 Mystring ss2 = ss1; 35 ss1.disp(); 36 ss2.disp(); 37 return 0; 38}

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

11行、19行にある obj.text は ss ですね(元のコードのミス
あと2つめのエラーは、「リテラル(この場合"abcde")を、char *として受け取れない」
(今の言語仕様ではconst char *でなければならない)
というエラーなので、char *で受け取るコンストラクタをconst char *にすれば直るはずです

投稿2016/12/24 08:02

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

上の方は、エラーに書いてあるとおりobjが見つからない状態です。引数がchar * ssなので、それを使うように書き直す必要があります。

また、"mystring"の型はconst char[]なので(普通の変数と違う箇所に入っていて書き換えが不可能なことも多い)、char *に引数として渡すと辻褄が合わなくなる危険があります。受け取った側で書き換えないなら、const char *で受けましょう。

投稿2016/12/24 08:00

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問