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

回答編集履歴

1

質問文更新に合わせて更新

2021/06/24 08:46

投稿

int32_t
int32_t

スコア21933

answer CHANGED
@@ -1,4 +1,15 @@
1
+ ```cpp
1
- 質問文の日本語がよくわからないですが、もし「可変長引数を持つ関数 `f(x, y, const char* format, ...)` の中で、可変長引数を持つ別の関数 `g(const char* format, ...)` を呼ぶことはできるか?」という問題であるなら、私の記憶が確かならまともな方法では不可能だった気がします。
2
+ void FrameWork::Text::ReFormatString(const char* font, int size, const char* str,
3
+ ...) {
4
+ ...
5
+ *fixationText = getTexture(str);
6
+ ```
2
7
 
8
+ 可変長引数を `getTexture()` に渡していないのですから、まともに動くはずないですよね。
9
+
10
+ ---
11
+
12
+ 「可変長引数を持つ関数 `ReFormatString(font, size, const char* format, ...)` の中で、可変長引数を持つ別の関数 `getTexture(const char* format, ...)` を呼ぶことはできるか?」という問題であるなら、私の記憶が確かならまともな方法では不可能だった気がします。
13
+
3
- そういう場合は、`g()` の引数を `g(const char* format, va_list)` に変更すれば良いです。
14
+ そういう場合は、`getTexture()` の引数を `getTexture(const char* format, va_list)` に変更すれば良いです。
4
- どうしても `g(const char* format, ...)` も必要な場合は、両方定義して `g(const char* format, ...)` から `g(const char* format, va_list)` を呼べばよいのです。
15
+ どうしても `getTexture(const char* format, ...)` も必要な場合は、両方定義して `getTexture(const char* format, ...)` から `getTexture(const char* format, va_list)` を呼べばよいのです。