クラス宣言の前にマクロを定義しています。マクロはクラスのメンバ関数を呼び出します。私のサンプルコードは以下の通りです。私はmain.cppにを実行するとクラス宣言前のクラスのメンバ関数を呼び出す
Sampleクラスの宣言、
// sample.h
#include <sstream>
#include <iostream>
using namespace std;
#define CALCULATETEMP(a, b, c) {
int d = Sample::getTempIncrement(a,b,c);
stringstream ss;
ss << d;
cout << ss.str() << endl;
}
class Sample {
public:
Sample();
int getTempIncrement(int a, int b, int c);
~Sample();
};
Sampleクラスの実装、
//sample.cpp
#include "sample.h"
Sample::Sample() {
}
int Sample::getTempIncrement(int a, int b, int c) {
int temp = 5;
int d = (a*temp) + (b+c)*temp;
return d;
}
Sample::~Sample() {
}
メインルーチン、
//main.cpp
#include "sample.h"
int main(int argc, char* argv[]) {
int a = 1;
int b = 2;
int c = 3;
CALCULATETEMP(a, b, c);
return 0;
}
、私は、エラーを取得していますマクロ定義内のsample.hファイル: "Sample"はクラスまたは名前空間名ではありません。
クラスのメンバー関数をクラスのスコープの外で、クラス宣言の前に呼び出すにはどうすればよいですか?私はプログラミングに新しく、あなたのフィードバックは私に役立つでしょう、ありがとう。
ええ、 'stringstream'はそこにいくつかのオーバーヘッドでした、ありがとうございました。私はマクロを試していただけで、関数でそれをやっていないという点については何も特定していませんでした。 –
@capricorn_heitus OK、実験には何も間違っていません:)これは実際のコードの場合に備えて指摘したかったのです。 –
そして、 '\'の後ろに空白を入れないでください。同じ問題に終わるでしょう。それは、改行ではなくスペースから脱出するでしょう。おかげさまで –