1
C# 배경에서 변경해야 할 몇 가지 habbits가 있습니다. 나는 함수에서 QList <int>를 반환하려고합니다. 컴파일러 오류 메시지는 'QList *'에서 요청한 비 스칼라 유형 'QList'로의 변환입니다. 내가 올바른 구문QList를 반환하는 함수를 작성하십시오. <int>
C# 배경에서 변경해야 할 몇 가지 habbits가 있습니다. 나는 함수에서 QList <int>를 반환하려고합니다. 컴파일러 오류 메시지는 'QList *'에서 요청한 비 스칼라 유형 'QList'로의 변환입니다. 내가 올바른 구문QList를 반환하는 함수를 작성하십시오. <int>
오류가 아닌 포인터 사이의 은밀한을 시도하고 있다는 사실을 언급하고를 사용하여 문서 또는 기능에 대한 링크를 감사하겠습니다
QList<int> toCategories(QVariant qv)
{
QList<int>categories = new QList<int>();
if(qv.isValid() && qv.type() == QVariant::List)
{
foreach(QVariant category,qv.toList()){
categories.append(category.toInt());
}
}
return categories;
}
: 여기에 기능입니다 QList
을 QList
에 대한 포인터에 연결합니다. 당신은 C를 처음부터 나는 this question을 검토하는 것이 좋습니다, ++
QList<int> toCategories(QVariant qv)
{
QList<int> categories;
if(qv.isValid() && qv.type() == QVariant::List)
{
foreach(QVariant category,qv.toList()){
categories.append(category.toInt());
}
return categories;
}
}
:
QList<int>* toCategories(QVariant qv)
{
QList<int>* categories = new QList<int>();
if(qv.isValid() && qv.type() == QVariant::List)
{
foreach(QVariant category,qv.toList()){
categories->append(category.toInt());
}
return categories;
}
}
다른 방법으로, 당신은 포인터가 아닌 QList
를 사용할 수 있습니다 다음과 같이 당신은 QList
에 대한 포인터를 사용하거나 필요 .
내가 지적 할 수있는 것처럼, 나열된 함수는 특정 경로가 값을 반환하지 않는 문제가 있습니다 (코드의 일부만 복사하여 붙여 넣기 때문일 수도 있습니다).
감사합니다. 따라서 일반적으로 'new'키워드를 사용하면 저장소가 힙에 만들어지며 해당 저장소 위치를 참조하는 포인터를 사용해야합니까? (예, 코드를 자르고 붙여 넣은 다음 잘못된 곳으로 돌려 놓습니다. 몇 줄 아래에 있어야합니다 ... 질문을 편집하겠습니다.) – DarwinIcesurfer
@DarwinIcesurfer 예, 일반적으로 정확 합니다만, 그. 참조 연산자, 주소 연산자 및 값, 참조 및 포인터 사용에 대한 자습서/예제를 살펴보십시오. 또한 포인터 연산을 조사 할 가치가 있습니다. –
Qt는 4.8 이후 적극적인 rvalue 지원을하므로 두 번째 변형은 처음보다 훨씬 안전하고 빠릅니다. 왜냐하면 카테고리 var는 복사되지 않고 외부로 옮겨지기 때문입니다. –