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

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

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

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

Q&A

解決済

1回答

2459閲覧

C++ 配列のポインタ管理について

saito.kaz

総合スコア76

C++

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

0グッド

0クリップ

投稿2016/01/19 16:45

###前提・実現したいこと
配列で定義されたポインタで、各要素ごとの配列を管理したいと考えております。
下記のようにすることは不可能でしょうか?

someone[i] = w[i];
cout << someone[i].salary << "\n";

###発生している問題・エラーメッセージ
Main.cpp:7:29: warning: ISO C++11 does not allow conversion from string literal to 'char ' [-Wwritable-strings]
char
Worker::CompanyName = "ABC";
^
Main.cpp:10:8: warning: expression result unused [-Wunused-value]
this->num;

Main.cpp:43:18: error: assigning to 'Worker *' from incompatible type 'Worker'; take the address with & someone[i] = w[i]; ^ ~~~~ & Main.cpp:44:25: error: member reference type 'Worker *' is a pointer; maybe you meant to use '->'? cout << someone[i].salary << "\n"; ~~~~~~~~~~^ -> ###ソースコード ```<メイン文> #include <iostream> #include "string.h" #include "Worker.h" using namespace std; int Worker::no = 0; char* Worker::CompanyName = "ABC"; Worker::Worker(){ this->num; cout << "-------------------" << Worker::no << "\n"; this->salary = 0; strcpy(this->department, "NotDefinedDepartment"); strcpy(this->name, "NotDefinedName"); no++; } Worker::~Worker(){ } Worker::Worker(double salary ,char department[100], char name[100]){ this->num = no; this->salary = salary; strcpy(this->department,department); strcpy(this->name,name); no++; } void Worker::ShowData(){ cout << "no = " << this->no << "\n"; cout << "salary = " << this->salary << "\n"; cout << "department = " << this->department << "\n"; cout << "name = " << this->name << "\n"; } int main(void){ Worker w[3]; Worker* someone[3]; for(int i=0 ; i<3 ;i++){ w[i].salary = 100; strcpy(w[i].department, "E"); strcpy(w[i].name, "Takayuki"); someone[i] = w[i]; cout << someone[i].salary << "\n"; } w[0].ShowData(); w[1].ShowData(); } <ヘッダー文> class Worker{ public: static int no; int num; static char* CompanyName; double salary; char department[100]; char name[100]; Worker(); ~Worker(); Worker(double salary ,char department[100], char name[100]); void ShowData(); }; ``` ###補足情報(言語/FW/ツール等のバージョンなど) paiza.io

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

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

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

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

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

guest

回答1

0

ベストアンサー

someone[i]がw[i]を示すようにしたいということならw[i]のアドレスを代入する必要があります。

C++

1someone[i] = &w[i];

また、someoneはポインタなのでアクセスするにはアロー演算子->を使用します。

C++

1cout << someone[i]->salary << "\n";

投稿2016/01/19 16:56

toki_td

総合スコア2850

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

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

saito.kaz

2016/01/20 00:58

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問