質問編集履歴

5

誤字を修正

2021/09/14 11:20

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  #質問内容
2
2
 
3
- 文章をコピー出来なかったので画像ですいません。以下の画像ですがなぜ「malloc.c : 2329: sysmalloc: Assertion」リンクエラーが発生するのでしょうか? 提示コードですがEntryクラスのコンストラクタのChangeScene()関数でstd::make_unique<Edit>();コードで発生しているのですがそのEditクラスは問題ありませんでした。つまりstd::make_unique<Edit>();が原因なのですがなぜリンクエラーが出るのでしょうか?
3
+ 文章をコピー出来なかったので画像ですいません。以下の画像ですがなぜ「malloc.c : 2329: sysmalloc: Assertion」エラーが発生するのでしょうか? 提示コードですがEntryクラスのコンストラクタのChangeScene()関数でstd::make_unique<Edit>();コードで発生しているのですがそのEditクラスは問題ありませんでした。つまりstd::make_unique<Edit>();が原因なのですがなぜエラーが出るのでしょうか?
4
4
 
5
5
  ※C++ 14を使っています。
6
6
 

4

文章を修正しました。

2021/09/14 11:20

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,12 @@
1
1
  #質問内容
2
2
 
3
- 文章をコピー出来なかったので画像ですいません。以下の画像ですがなぜ「malloc.c : 2329: sysmalloc: Assertion」リンクエラーが発生するのでしょうか? 提示コードですがEntryクラスのコンストラクタのChangeScene()関数でstd::make_quniue<Edit>();コードで発生しているのですがそのEditクラスは問題ありませんでした。つまりstd::make_quniue<Edit>();が原因なのですがなぜリンクエラーが出るのでしょうか?
3
+ 文章をコピー出来なかったので画像ですいません。以下の画像ですがなぜ「malloc.c : 2329: sysmalloc: Assertion」リンクエラーが発生するのでしょうか? 提示コードですがEntryクラスのコンストラクタのChangeScene()関数でstd::make_unique<Edit>();コードで発生しているのですがそのEditクラスは問題ありませんでした。つまりstd::make_unique<Edit>();が原因なのですがなぜリンクエラーが出るのでしょうか?
4
4
 
5
5
  ※C++ 14を使っています。
6
6
 
7
7
  ```
8
8
 
9
- std::make_quniue<Edit>();
9
+ std::make_unique<Edit>();
10
10
 
11
11
  ```
12
12
 

3

文書を追記

2021/09/14 11:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -629,3 +629,63 @@
629
629
 
630
630
 
631
631
  ```
632
+
633
+
634
+
635
+ ```
636
+
637
+ #ifndef __ENTRY_HPP_
638
+
639
+ #define __ENTRY_HPP_
640
+
641
+
642
+
643
+
644
+
645
+ #include <iostream>
646
+
647
+ #include "Scene.hpp"
648
+
649
+ #include <memory>
650
+
651
+
652
+
653
+ class Edit;
654
+
655
+ class Entry : public Scene
656
+
657
+ {
658
+
659
+ public:
660
+
661
+ Entry(); //コンストラクタ
662
+
663
+ ~Entry(); //デストラクタ
664
+
665
+
666
+
667
+ void Update(); //計算
668
+
669
+ void Renderer()const; //描画
670
+
671
+ void ChangeScene(); //シーン推移
672
+
673
+ private:
674
+
675
+
676
+
677
+ std::unique_ptr<Edit> edit;
678
+
679
+
680
+
681
+ Scene::SceneType nowScene; //現在のシーン
682
+
683
+
684
+
685
+
686
+
687
+ };
688
+
689
+ #endif
690
+
691
+ ```

2

文章を修正

2021/09/14 11:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  #質問内容
2
2
 
3
- 文章をコピー出来なかったので画像ですいません。以下の画像ですがなぜ「malloc.c : 2329: sysmalloc: Assertion」実行エラーが発生するのでしょうか? 提示コードですがEntryクラスのコンストラクタのChangeScene()関数でstd::make_quniue<Edit>();コードで発生しているのですがそのEditクラスは問題ありませんでした。つまりstd::make_quniue<Edit>();が原因なのですがなぜ実行エラーが出るのでしょうか?
3
+ 文章をコピー出来なかったので画像ですいません。以下の画像ですがなぜ「malloc.c : 2329: sysmalloc: Assertion」リンクエラーが発生するのでしょうか? 提示コードですがEntryクラスのコンストラクタのChangeScene()関数でstd::make_quniue<Edit>();コードで発生しているのですがそのEditクラスは問題ありませんでした。つまりstd::make_quniue<Edit>();が原因なのですがなぜリンクエラーが出るのでしょうか?
4
4
 
5
5
  ※C++ 14を使っています。
6
6
 
@@ -419,3 +419,213 @@
419
419
 
420
420
 
421
421
  ```
422
+
423
+
424
+
425
+
426
+
427
+ ```
428
+
429
+ #include <stdlib.h>
430
+
431
+ #include <iostream>
432
+
433
+ //#include <memory>
434
+
435
+
436
+
437
+ #include "../header/Edit.hpp"
438
+
439
+ #include "../lib/ncurses/include/curses.h"
440
+
441
+
442
+
443
+ // ######################## コンストラクタ ########################
444
+
445
+ Edit::Edit() : Scene()
446
+
447
+ {
448
+
449
+
450
+
451
+ mousePosition.x = 0;
452
+
453
+ mousePosition.y = 0;
454
+
455
+
456
+
457
+ int t = 1;
458
+
459
+ for(int i = 0; i < 8; i++)
460
+
461
+ {
462
+
463
+ for(int j = 0; j<8; j++)
464
+
465
+ {
466
+
467
+ init_pair(t, i, j);
468
+
469
+ t++;
470
+
471
+ }
472
+
473
+ }
474
+
475
+
476
+
477
+
478
+
479
+ // screen = std::make_unique<Screen>(); //前景
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+ //changeScene = Scene::SceneType::Edit; //現在のシーン
488
+
489
+ }
490
+
491
+
492
+
493
+ // ######################## Keyboard Input ########################
494
+
495
+ void Edit::KeyInput()
496
+
497
+ {
498
+
499
+
500
+
501
+ int key = getch();
502
+
503
+
504
+
505
+ //ESCで終了
506
+
507
+ if(key == 27)
508
+
509
+ {
510
+
511
+ // changeScene = Scene::SceneType::Exit;
512
+
513
+ }
514
+
515
+ }
516
+
517
+
518
+
519
+ // ######################## Update ########################
520
+
521
+ void Edit::Update()
522
+
523
+ {
524
+
525
+ MouseInput();
526
+
527
+ KeyInput();
528
+
529
+ }
530
+
531
+
532
+
533
+ // ######################## Renderer ########################
534
+
535
+ void Edit::Renderer()const
536
+
537
+ {
538
+
539
+
540
+
541
+ }
542
+
543
+
544
+
545
+
546
+
547
+ // ######################## Mouse Input ########################
548
+
549
+ void Edit::MouseInput()
550
+
551
+ {
552
+
553
+
554
+
555
+ //マウスイベント
556
+
557
+ if(getmouse(&event) == OK)
558
+
559
+ {
560
+
561
+ //マウス座標
562
+
563
+ if(event.bstate & REPORT_MOUSE_POSITION)
564
+
565
+ {
566
+
567
+ mousePosition.x = event.x;
568
+
569
+ mousePosition.y = event.y;
570
+
571
+ }
572
+
573
+
574
+
575
+ //Left click
576
+
577
+ if(event.bstate & BUTTON1_PRESSED)
578
+
579
+ {
580
+
581
+
582
+
583
+ }
584
+
585
+
586
+
587
+ //Right click
588
+
589
+ if(event.bstate & BUTTON3_PRESSED)
590
+
591
+ {
592
+
593
+
594
+
595
+ }
596
+
597
+ }
598
+
599
+ erase();
600
+
601
+ move(mousePosition.y,mousePosition.x);
602
+
603
+
604
+
605
+ //screen->Renderer();
606
+
607
+
608
+
609
+ refresh();
610
+
611
+ }
612
+
613
+
614
+
615
+
616
+
617
+ //デストラクタ
618
+
619
+ Edit::~Edit()
620
+
621
+ {
622
+
623
+
624
+
625
+ }
626
+
627
+
628
+
629
+
630
+
631
+ ```

1

文章を修正

2021/09/14 11:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,40 @@
14
14
 
15
15
 
16
16
 
17
+ ```
18
+
19
+ $ make
20
+
21
+ g++ -c -MMD -MP source/Edit.cpp -o obj/Edit.o
22
+
23
+ In file included from /usr/include/c++/9/memory:80,
24
+
25
+ from source/../header/Edit.hpp:5,
26
+
27
+ from source/Edit.cpp:5:
28
+
29
+ /usr/include/c++/9/bits/unique_ptr.h: In instantiation of ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = Screen]’:
30
+
31
+ /usr/include/c++/9/bits/unique_ptr.h:292:17: required from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = Screen; _Dp = std::default_delete<Screen>]’
32
+
33
+ source/Edit.cpp:9:22: required from here
34
+
35
+ /usr/include/c++/9/bits/unique_ptr.h:79:16: error: invalid application of ‘sizeof’ to incomplete type ‘Screen’
36
+
37
+ 79 | static_assert(sizeof(_Tp)>0,
38
+
39
+ | ^~~~~~~~~~~
40
+
41
+ make: *** [Makefile:11: obj/Edit.o] エラー 1
42
+
43
+
44
+
45
+ ```
46
+
47
+
48
+
49
+
50
+
17
51
  ![イメージ説明](10f74f62044481dd1128b71eb6104010.png)
18
52
 
19
53