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

質問編集履歴

2

無駄な部分を省き、質問をわかりやすくしました。

2016/11/20 10:44

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- C++ 別クラスの常に化する変数を取得し続けたい
1
+ クラスのPublicの変数をうまく参照できません。c++
body CHANGED
@@ -1,35 +1,18 @@
1
1
  Openframeworksにて、常に変化する変数を違うファイルにある別クラスから取得し続けたいと考えております。ネット等でも調べて ```Public:```で定義されている変数はそのまま他のクラスからでも参照できることがわかり([こちら](http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1422626854))例を参考に作成してみましたがうまく取得できていないようです。以下コードです。
2
2
  ```c++
3
3
  //ファイル名 ofApp.h
4
- #pragma once
5
4
  #include "ofMain.h"
6
- #include "A.h"
5
+
7
6
  class ofApp : public ofBaseApp{
8
-
9
7
  public:
10
- void setup();
11
- void update();
12
8
  void draw();
13
- void audioIn(float*input, int bufferSize, int nChannels);
14
9
  float curVol, volume;
10
+ float getValue() { return volume; };
15
11
  ```
16
12
  ```c++
17
13
  //ファイル名 ofApp.cpp
18
14
  #include "ofApp.h"
19
- //--------------------------------------------------------------
20
- void ofApp::setup(){
21
- ofSoundStreamSetup(0, 1, 44100, 256, 4);
22
- }
23
15
 
24
- //--------------------------------------------------------------
25
- void ofApp::audioIn(float*input, int bufferSize, int nChannels) {
26
- for (int i = 0; i < bufferSize; i++) {
27
- curVol += input[i] * input[i];
28
- }
29
- curVol /= bufferSize;
30
- }
31
-
32
- //--------------------------------------------------------------
33
16
  void ofApp::draw(){
34
17
  volume = 15 * sqrt(curVol);
35
18
  //ここでvolumeの値が毎秒30回更新されています。この計算はうまくいっています。
@@ -37,43 +20,31 @@
37
20
  ```
38
21
  この```volume```を別のファイルの別のクラスから参照します。
39
22
  ```c++
40
- //ファイル名 A.h
23
+ //ファイル名 _tf16_1.h
41
24
  #include "ofMain.h"
42
25
  #include "ofApp.h" //volumeがあるファイルを読み込み
26
+
43
27
  class _tf16_1 : public baseScene {
44
-
45
28
  public:
46
- void setup();
47
- void update();
48
29
  void draw();
30
+ float volume1;
49
31
  }
50
32
  ```
51
33
  ```c++
52
- //ファイル名 A.cpp
34
+ //ファイル名 _tf16_1.cpp
53
- #include "A.h"
35
+ #include "_tf16_1.h"
54
- //--------------------------------------------------------------
55
- void _tf16_1::setup(){
56
- }
57
36
 
58
- //--------------------------------------------------------------
59
- void _tf16_1::update(){
60
- }
61
-
62
- //--------------------------------------------------------------
63
37
  void _tf16_1::draw(){
38
+ ofApp reference;
64
39
  ofApp *vol;
65
- volume1 = vol->volume;
40
+ volume1 = vol -> getValue();//volume1に値がうまく入りません。
66
- //ここで参照失敗
67
41
  }
68
42
 
69
43
  ```
70
- どのようにすれば変化し続ける変数を別クラスから持ってくることができるでしょうか?詳しい方がいればご教授下さい
44
+ どのようにすれば volume値 を volume1 に代入できるでしょうか。
45
+ 詳しい方ご教授下さい。
71
46
 
72
47
  ---
73
- 背景:openframeworksで複数のシーンを切り替えて表示させており、```ofSoundStreamSetup関数```を何度も呼び出す羽目になってしまったため、参照元である```ofApp.cpp```で計算だけさせその結果を```A.cpp```で使おう。という意図になります
74
- 参考: [http://www.slideshare.net/tado/tamabi-ma131111](http://www.slideshare.net/tado/tamabi-ma131111)
75
-
76
- ---
77
48
  環境
78
49
 
79
50
  Windows10 VisualStudio2015

1

誤字を修正しました。

2016/11/20 10:44

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -40,7 +40,7 @@
40
40
  //ファイル名 A.h
41
41
  #include "ofMain.h"
42
42
  #include "ofApp.h" //volumeがあるファイルを読み込み
43
- class A : public baseScene {
43
+ class _tf16_1 : public baseScene {
44
44
 
45
45
  public:
46
46
  void setup();