C++에서 표현식을 축약하는 방법이 있습니까? 예를 들어, 만약 내가이표현식을 식별자로 축약합니다.
ui.myplot->graph(0)
같은 것을 가지고 내가 대신
int a = ui.myplot->graph(0)->val;
처럼가는 나는이
int a = mygraph->val;
을 할 수 있도록,
mygraph
로 줄여 싶습니다
typedef는 여기에서 일하지 않을 거예요. 어떤 제안?
C++에서 표현식을 축약하는 방법이 있습니까? 예를 들어, 만약 내가이표현식을 식별자로 축약합니다.
ui.myplot->graph(0)
같은 것을 가지고 내가 대신
int a = ui.myplot->graph(0)->val;
처럼가는 나는이
int a = mygraph->val;
을 할 수 있도록,
mygraph
로 줄여 싶습니다
typedef는 여기에서 일하지 않을 거예요. 어떤 제안?
참조 사용 :이 값을 변경해야하는 경우
const auto& mygraph = ui.myplot->graph(0);
또는 변경 가능한 참조 : 참조가 별칭을 사용하도록 설계
auto& mygraph = ui.myplot->graph(0);
을; 이것이 매개 변수 전달에서 가장 자주 발생한다는 사실은 오해의 소지가 있습니다. 객체의 중첩 된 필드와 같이 복잡한 표현식의 결과를 별칭으로 사용하기 위해 로컬로 사용할 수도 있습니다.
내가 보여주는 코드가 Qt 패러다임을 사용하기 때문에 Designer 및 UI 파일과 함께 Qt를 사용한다고 가정합니다.
이MyClass::MyClass()
{
ui->setupUi(this);
mygraph = ui.myplot->graph(0);
}
이제 당신이 사용할 수있는 다음 ui->setupUI(this)
후, 생성자에서
MyClass {
Q_OBJECT
public:
Graph* mygraph;
MyClass();
}
:
는 클래스의 Graph* mygraph
회원을 넣고 그래프 (0)를 가리 키도록 설정 그것은 당신의 수업 방법에 있습니다.
int MyClass::getValue()
{
int a = mygraph->val();
return a;
}
주저하지 말고 로컬 변수를 정의하십시오. 그들은 가독성을 향상 시키는데 매우 편리하며, -O0으로 컴파일되지 않으면 컴파일러 (참조 또는 실제 변수)에 의해 최적화됩니다 (이 마지막 경우에는 최적화 동작이 확실하지 않습니다)
int a = ui.myplot->graph(0)->val;
는`#의 define`를 사용할 수없는 이유가 myParticularGraph
이 ui.myplot->graph(0)
'graph (0)'은 함수 호출이고'auto &'에 바인드 할 수없는 임시 (rvalue)를 반환합니다. – KillianDS
에 대한 "별명"와 같은 지금
이됩니까? – librik'auto & mygraph = ui.myplot-> graph (0); (또는'const'에 대해 좀 더 일반화하고 싶다면'decltype') 가능성있는 유일한 논리적 솔루션처럼 보입니다. – chris
@librik : 최대한 많이 정의하지 마십시오. 유형이 강하지는 않으며 모든 종류의 예상치 못한 구문 문제를 나타낼 수 있습니다. – KillianDS