질문 제목을 수정해야합니다. 그것은 "참조 사용"을 말합니다. 그것은 분명히 당신이 의미하는 것의 반대입니다.
이 없다고 가정 : 어떤 래퍼 트릭 exluding 허용
진정
- 대한 참조와 포인터를
- 런타임 스왑 당신이 원하는 무엇인가 - 시간 템플릿 속임수
- 어떤 클래스를 컴파일 반대로, 그 때문에 사소한 일 이겠네.
나는 완전히 끔찍한 해결책을 생각할 수있다. ints 전역을 만드십시오.
ridiculous_swap.hpp
#ifndef RIDICULOUS_SWAP_HPP
#define RIDICULOUS_SWAP_HPP
extern int first;
extern int second;
void swap_ints();
#endif // RIDICULOUS_SWAP_HPP
ridiculous_swap.cpp
int first = 0;
int second = 0;
void swap_ints()
{
auto tmp = first;
first = second;
second = tmp;
}
MAIN.CPP
#include "ridiculous_swap.hpp"
#include <iostream>
int main()
{
first = 23;
second = 42;
std::cout << "first " << first << " second " << second << "\n";
// prints: first 23 second 42
swap_ints();
std::cout << "first " << first << " second " << second << "\n";
// prints: first 42 second 23
}
I t는 아무 것도 쓸모가 없지만 참조 나 포인터를 사용하지 않고 두 개의 정수를 교환합니다.
가. 스왑 함수가 내부로 스왑 될 수 있지만 호출자에게는 아무런 영향을 미치지 않는다는 것을 의미합니다. – drescherjm
포인터는 기술적으로 참조하는 것이기 때문에 (''void swap (int & a, int & b)'를 사용하는 것과 같지 않다. –
요청의 전체 내용은 무엇입니까? 그것은 말이되지 않습니다. –