클래스 선언 앞에 매크로를 정의하려고합니다. 매크로는 클래스의 멤버 함수를 호출합니다. 내 샘플 코드는 아래와 같습니다.클래스 선언 이전 클래스의 멤버 함수 호출
샘플 클래스 선언,
// 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.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;
}
나는 MAIN.CPP을 실행
, 나는 오류가 무엇입니까 매크로 정의 내의 sample.h 파일 : "Sample"은 클래스 또는 네임 스페이스 이름이 아닙니다.클래스의 범위 밖에서 클래스 선언 이전에 클래스의 멤버 함수를 어떻게 호출 할 수 있습니까? 나는 프로그래밍에 아주 익숙하다. 당신의 피드백은 나를 도울 것입니다. 고마워요. 또한
#define CALCULATETEMP(a, b, c) { \
int d = Sample::getTempIncrement(a,b,c); \
stringstream ss; \
ss << d; \
cout << ss.str() << endl; \
}
, 왜 당신은 그냥 사용이하는 기능을 사용 (하지 않는 : 매크로 여러 줄에 걸쳐하려면
예, 'stringstream'이 약간의 오버 헤드였습니다. 감사합니다. 나는 단지 매크로를 시도하고 있었고, 함수를 사용하지 않는 것에 대해서는 특별한 것이 없었다. –
@capricorn_heitus 좋습니다, 실험에 아무 문제가 없습니다.이 코드가 어딘가에있는 경우에 대비하여 필자는 이것을 지적하고 싶었습니다. –
그리고 '\'다음에 공백을 두지 마십시오. 그렇지 않으면 같은 문제가 발생합니다. 그것은 개조보다 공간을 벗어날 것입니다. –