我不知道我能做些什麼來使這個工作在C++中。C++對和指針
的打算是:
pair<int, int> foo() {
if(cond) {
return std::make_pair(1,2);
}
return NULL; //error: no viable conversion from 'long' to 'pair<int, int>
}
void boo() {
pair<int, int> p = foo();
if (p == NULL) { //error: comparison between NULL and non-pointer ('int, int' and NULL)
// doA
} else {
int a = p.first;
int b = p.second;
// doB
}
}
既然不能在C++中使用返回NULL,這裏是我的第二次嘗試:
pair<int, int>* foo() {
if(cond) {
return &std::make_pair(1,2); //error: returning address of local temporary object)
}
return nullptr;
}
void boo() {
pair<int, int>* p = foo();
if (p == nullptr) {
// doA
} else {
int a = p->first;
int b = p->second;
// doB
}
}
什麼是正確的方法能夠返回一個對和一個空值。
對於初學者來說,[避免對(http://maintainablecode.logdown.com/posts/158531 -stdpair考慮的有害)。 – Mark
使用'new'在堆上分配對。 – Barmar
@Barmar,不,只是沒有。 – Shoe