質問編集履歴

4

試したことその3を追記

2021/09/24 21:55

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

test CHANGED
File without changes
test CHANGED
@@ -214,15 +214,93 @@
214
214
 
215
215
 
216
216
 
217
-
217
+ ### 試したことその3(追記)
218
+
218
-
219
+ ポインタをよそのファイルのメンバ関数ではなく、本体で整数型の配列を指すポインタにしてみたところ、やはりhelloは出力しませんでした。
220
+
219
-
221
+ ```C++
222
+
220
-
223
+ #include <iostream>
224
+
221
-
225
+ using namespace std;
226
+
227
+
228
+
222
-
229
+ int main(){
230
+
231
+
232
+
223
-
233
+ cout<<"hello"<<endl;
234
+
235
+
236
+
224
-
237
+ int *p;
238
+
239
+ p=new int[10];
240
+
241
+ delete p;
242
+
243
+
244
+
245
+ //int *p;
246
+
247
+ //p=(int *)malloc(sizeof(int)*10);
248
+
249
+ //free(p);
250
+
251
+ }
252
+
253
+ ```
254
+
255
+ 配列の動的な確保にnewではなくmallocを使ったらhelloは出力されました。
256
+
257
+ ```C++
258
+
259
+ #include <iostream>
260
+
261
+ using namespace std;
262
+
263
+
264
+
265
+ int main(){
266
+
267
+
268
+
269
+ cout<<"hello"<<endl;
270
+
271
+
272
+
273
+ //int *p;
274
+
275
+ //p=new int[10];
276
+
277
+ //delete p;
278
+
279
+
280
+
281
+ int *p;
282
+
283
+ p=(int *)malloc(sizeof(int)*10);
284
+
285
+ free(p);
286
+
287
+ }
288
+
289
+ ```
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
225
- ### 環境とか
303
+ ### 環境
226
304
 
227
305
  実行環境はvisual studio codeを使っています。他にもMinGWやMSYS2を最近ダウンロードしました。(実行環境とはこういうのを指す言葉でしょうか?いまいち自信がありません)
228
306
 

3

試したことその2を追記

2021/09/24 21:55

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

test CHANGED
File without changes
test CHANGED
@@ -166,6 +166,62 @@
166
166
 
167
167
  ```
168
168
 
169
+ ### 試したことその2(追記)
170
+
171
+ test.cppという名前をwakaran.cppに変え、makefileのtest部分をすべてwakaranに置換しました。
172
+
173
+ > mingw32-make.exe
174
+
175
+ g++ -Wall -g wakaran.o initialize.o -o tesuto
176
+
177
+ > ./tesuto
178
+
179
+
180
+
181
+ 文章は出てきませんでした。
182
+
183
+ その後、
184
+
185
+ > mingw32-make.exe clean
186
+
187
+
188
+
189
+ をしてみたところ、
190
+
191
+ >process_begin: CreateProcess(NULL, rm tesuto wakaran.o initialize.o, ...) failed.
192
+
193
+ make (e=2): wウスt@CェゥツゥワケB
194
+
195
+ makefile:11: recipe for target 'clean' failed
196
+
197
+ mingw32-make: *** [clean] Error 2
198
+
199
+
200
+
201
+ となったので、
202
+
203
+
204
+
205
+ > rm *o
206
+
207
+ > rm *exe
208
+
209
+
210
+
211
+ して再度実行してみたところ、やはりポインタを使うと文章は出力されませんでした。
212
+
213
+ いずれの場合も、ポインタを使わず変数を使うと想定通り文章が出力されました。その時毎回文章を微妙に変えましたがその通りに出力されました。
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
169
225
  ### 環境とか
170
226
 
171
227
  実行環境はvisual studio codeを使っています。他にもMinGWやMSYS2を最近ダウンロードしました。(実行環境とはこういうのを指す言葉でしょうか?いまいち自信がありません)

2

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

2021/09/24 08:02

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

test CHANGED
File without changes
test CHANGED
@@ -26,6 +26,10 @@
26
26
 
27
27
 
28
28
 
29
+
30
+
31
+
32
+
29
33
  ### 該当のソースコード
30
34
 
31
35
 
@@ -158,4 +162,56 @@
158
162
 
159
163
  cout << "hello"<<endl;
160
164
 
165
+
166
+
161
- ```
167
+ ```
168
+
169
+ ### 環境とか
170
+
171
+ 実行環境はvisual studio codeを使っています。他にもMinGWやMSYS2を最近ダウンロードしました。(実行環境とはこういうのを指す言葉でしょうか?いまいち自信がありません)
172
+
173
+
174
+
175
+
176
+
177
+ ### 実行手順
178
+
179
+ makefileを使っています。
180
+
181
+ 内容はこうです。
182
+
183
+ ```
184
+
185
+ //makefile
186
+
187
+ tesuto: test.o initialize.o
188
+
189
+ g++ -Wall -g test.o initialize.o -o tesuto
190
+
191
+
192
+
193
+ test.o: test.cpp initialize.h
194
+
195
+ g++ -Wall -g -c -I./ test.cpp -o test.o
196
+
197
+
198
+
199
+ initialize.o: initialize.cpp initialize.h
200
+
201
+ g++ -Wall -g -c -I./ initialize.cpp -o initialize.o
202
+
203
+
204
+
205
+ clean:
206
+
207
+ rm tesuto test.o initialize.o
208
+
209
+ ```
210
+
211
+ > mingw32-make.exe
212
+
213
+ ./tesuto
214
+
215
+
216
+
217
+ で実行しています。

1

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

2021/09/24 07:11

投稿

misosoupsoybeen
misosoupsoybeen

スコア0

test CHANGED
@@ -1 +1 @@
1
- ポインタからメンバ関数を呼び出せません。
1
+ ポインタからメンバ関数を呼び出したい
test CHANGED
@@ -9,6 +9,16 @@
9
9
 
10
10
 
11
11
  本体で宣言したポインタからよそのファイルに定義されたメンバ関数を呼び出したのですが、うまくいきません。
12
+
13
+ 出力結果は
14
+
15
+ hello from initialize
16
+
17
+ hello
18
+
19
+ が得られるかなと思いましたが、何も出力されませんでした。
20
+
21
+
12
22
 
13
23
 
14
24