Home > C++ > C++トリビアルメモ4 テンプレートと可変長と

C++トリビアルメモ4 テンプレートと可変長と

  • 2008-06-17 (火) 23:58
  • C++

例えばC99だとマクロで可変長引数を使えて、…ではなくて
__VA_ARGS__
を使う。

あんまり関係ないけど、テンプレートクラスでもstdargが使えるのかと思ってやってみたら使えた。in vc2008。
PrintfClass.h:


#pragma once

#include <stdarg.h>

template<typename T>
class PrintfClass
{
public:

	PrintfClass(void)
	{
	}

	~PrintfClass(void)
	{
	}

	T printfTest(int n, ...) {
		va_list args;
		T sum = 0;

		va_start(args, n);
		for (int i = 0; i < n; i++) {
			sum += va_arg(args, T);
		}
		va_end(args);

		return sum;
	}
};

main.cpp:


#include "PrintfClass.h"
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
	PrintfClass<double> a;

	double b = a.printfTest(3, 1.0, 2.0, 3.0);
	std::cout << b << std::endl;

	return 0;
}

結果:


6

さらに関係ないけど、std::coutのフォーマットは「マニピュレータ」を使う。名前さえ分かってれば調べられる。
例えば。
http://www-nh.scphys.kyoto-u.ac.jp/~shoji/Tips/Cpp_Stream.html

以上

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=237
Listed below are links to weblogs that reference
C++トリビアルメモ4 テンプレートと可変長と from コスミー報告書[社外秘]

Home > C++ > C++トリビアルメモ4 テンプレートと可変長と

Search
Feeds
Meta
 合計:012227
 今日:0067 昨日:0134

Return to page top