teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

試したことその3を追記

2021/09/24 21:55

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

title CHANGED
File without changes
body CHANGED
@@ -106,11 +106,50 @@
106
106
  して再度実行してみたところ、やはりポインタを使うと文章は出力されませんでした。
107
107
  いずれの場合も、ポインタを使わず変数を使うと想定通り文章が出力されました。その時毎回文章を微妙に変えましたがその通りに出力されました。
108
108
 
109
+ ### 試したことその3(追記)
110
+ ポインタをよそのファイルのメンバ関数ではなく、本体で整数型の配列を指すポインタにしてみたところ、やはりhelloは出力しませんでした。
111
+ ```C++
112
+ #include <iostream>
113
+ using namespace std;
109
114
 
115
+ int main(){
110
116
 
117
+ cout<<"hello"<<endl;
111
118
 
119
+ int *p;
120
+ p=new int[10];
121
+ delete p;
112
122
 
123
+ //int *p;
124
+ //p=(int *)malloc(sizeof(int)*10);
125
+ //free(p);
126
+ }
127
+ ```
128
+ 配列の動的な確保にnewではなくmallocを使ったらhelloは出力されました。
129
+ ```C++
130
+ #include <iostream>
131
+ using namespace std;
132
+
133
+ int main(){
134
+
135
+ cout<<"hello"<<endl;
136
+
137
+ //int *p;
138
+ //p=new int[10];
139
+ //delete p;
140
+
141
+ int *p;
142
+ p=(int *)malloc(sizeof(int)*10);
143
+ free(p);
144
+ }
145
+ ```
146
+
147
+
148
+
149
+
150
+
151
+
113
- ### 環境とか
152
+ ### 環境
114
153
  実行環境はvisual studio codeを使っています。他にもMinGWやMSYS2を最近ダウンロードしました。(実行環境とはこういうのを指す言葉でしょうか?いまいち自信がありません)
115
154
 
116
155
 

3

試したことその2を追記

2021/09/24 21:55

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

title CHANGED
File without changes
body CHANGED
@@ -82,6 +82,34 @@
82
82
  cout << "hello"<<endl;
83
83
 
84
84
  ```
85
+ ### 試したことその2(追記)
86
+ test.cppという名前をwakaran.cppに変え、makefileのtest部分をすべてwakaranに置換しました。
87
+ > mingw32-make.exe
88
+ g++ -Wall -g wakaran.o initialize.o -o tesuto
89
+ > ./tesuto
90
+
91
+ 文章は出てきませんでした。
92
+ その後、
93
+ > mingw32-make.exe clean
94
+
95
+ をしてみたところ、
96
+ >process_begin: CreateProcess(NULL, rm tesuto wakaran.o initialize.o, ...) failed.
97
+ make (e=2): wウスt@CェゥツゥワケB
98
+ makefile:11: recipe for target 'clean' failed
99
+ mingw32-make: *** [clean] Error 2
100
+
101
+ となったので、
102
+
103
+ > rm *o
104
+ > rm *exe
105
+
106
+ して再度実行してみたところ、やはりポインタを使うと文章は出力されませんでした。
107
+ いずれの場合も、ポインタを使わず変数を使うと想定通り文章が出力されました。その時毎回文章を微妙に変えましたがその通りに出力されました。
108
+
109
+
110
+
111
+
112
+
85
113
  ### 環境とか
86
114
  実行環境はvisual studio codeを使っています。他にもMinGWやMSYS2を最近ダウンロードしました。(実行環境とはこういうのを指す言葉でしょうか?いまいち自信がありません)
87
115
 

2

環境や実行手順について追記しました。

2021/09/24 08:02

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

title CHANGED
File without changes
body CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  初学者です。専門用語の言い回しなどまだよくわかっていないため上記の表現で伝わるかわかりません。すみません。自分ではこれ以上何をどうすればいいのかよくわからないのでどうかよろしくお願いします。お力をお貸しください。
14
14
 
15
+
16
+
15
17
  ### 該当のソースコード
16
18
 
17
19
  ```C++
@@ -78,4 +80,30 @@
78
80
  Initialize init;
79
81
  init.hello();
80
82
  cout << "hello"<<endl;
83
+
81
- ```
84
+ ```
85
+ ### 環境とか
86
+ 実行環境はvisual studio codeを使っています。他にもMinGWやMSYS2を最近ダウンロードしました。(実行環境とはこういうのを指す言葉でしょうか?いまいち自信がありません)
87
+
88
+
89
+ ### 実行手順
90
+ makefileを使っています。
91
+ 内容はこうです。
92
+ ```
93
+ //makefile
94
+ tesuto: test.o initialize.o
95
+ g++ -Wall -g test.o initialize.o -o tesuto
96
+
97
+ test.o: test.cpp initialize.h
98
+ g++ -Wall -g -c -I./ test.cpp -o test.o
99
+
100
+ initialize.o: initialize.cpp initialize.h
101
+ g++ -Wall -g -c -I./ initialize.cpp -o initialize.o
102
+
103
+ clean:
104
+ rm tesuto test.o initialize.o
105
+ ```
106
+ > mingw32-make.exe
107
+ ./tesuto
108
+
109
+ で実行しています。

1

出力結果を忘れていましたので、追記しました。

2021/09/24 07:11

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

title CHANGED
@@ -1,1 +1,1 @@
1
- ポインタからメンバ関数を呼び出せません。
1
+ ポインタからメンバ関数を呼び出したい
body CHANGED
@@ -4,7 +4,12 @@
4
4
  コンパイルは通るものの実行結果が想定と違います。
5
5
 
6
6
  本体で宣言したポインタからよそのファイルに定義されたメンバ関数を呼び出したのですが、うまくいきません。
7
+ 出力結果は
8
+ hello from initialize
9
+ hello
10
+ が得られるかなと思いましたが、何も出力されませんでした。
7
11
 
12
+
8
13
  初学者です。専門用語の言い回しなどまだよくわかっていないため上記の表現で伝わるかわかりません。すみません。自分ではこれ以上何をどうすればいいのかよくわからないのでどうかよろしくお願いします。お力をお貸しください。
9
14
 
10
15
  ### 該当のソースコード