gpt4 book ai didi

c++ - 将 vector 传递给函数 c++

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:39 25 4
gpt4 key购买 nike

我有一个 main.cpp test.h 和 test.cpp> 我正在尝试传递我的 vector ,以便我可以在 test.cpp 中使用它,但我不断收到错误。

   //file: main.cpp
int main(){
vector <Item *> s;
//loading my file and assign s[i]->name and s[i]-address
tester(s);
}

//file: test.h
#ifndef TEST_H
#define TEST_H
struct Item{
string name;
string address;
};
#endif

//file: test.cpp
int tester(Item *s[]){
for (i=0; i<s.sizeof();i++){
cout<< s[i]->name<<" "<< s[i]->address<<endl;
}
return 0;
}



---------------errors--------
In file included from main.cpp:13:
test.h:5: error: âstringâ does not name a type
test.h:6: error: âstringâ does not name a type
main.cpp: In function âint main()â:
main.cpp:28: error: cannot convert âstd::vector<Item*, std::allocator<Item*> >â to âItem**â for argument â1â to âint tester(Item**)â

最佳答案

A std::vector<T>T* []是不兼容的类型。

更改您的 tester()函数签名如下:

//file: test.cpp
int tester(const std::vector<Item>& s) // take a const-reference to the std::vector
// since you don't need to change the values
// in this function
{
for (size_t i = 0; i < s.size(); ++i){
cout<< s[i]->name<<" "<< s[i]->address<<endl;
}
return 0;
}

您可以通过多种方式传递此 std::vector<T>所有的含义都略有不同:

// This would create a COPY of the vector
// that would be local to this function's scope
void tester(std::vector<Item*>);

// This would use a reference to the vector
// this reference could be modified in the
// tester function
// This does NOT involve a second copy of the vector
void tester(std::vector<Item*>&);

// This would use a const-reference to the vector
// this reference could NOT be modified in the
// tester function
// This does NOT involve a second copy of the vector
void tester(const std::vector<Item*>&);

// This would use a pointer to the vector
// This does NOT involve a second copy of the vector
// caveat: use of raw pointers can be dangerous and
// should be avoided for non-trivial cases if possible
void tester(std::vector<Item*>*);

关于c++ - 将 vector 传递给函数 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com