将std::vector传递给函数 我想在C++代码中添加一些值给向量,但是每次我尝试把向量发送到我的MIN .CPP文件中的函数时,它会把它画成红色,并说: A nonstatic member reference mus be relative to a specific object.
在我的标题中:将std::vector传递给函数 我想在C++代码中添加一些值给向量,但是每次我尝试把向量发送到我的MIN .CPP文件中的函数时,它会把它画成红色,并说: A nonstatic member reference mus be relative to a specific object.,c++,C++,在我的标题中: #ifndef HEADER_H #define HEADER_H #include <vector> namespace Functions{ class MyClass { public: void fun(std::vector<char*> vect); }; } #endif #ifndef头 #定义标题 #包括 命名空间函数{ 类MyClass { 公众: void-fun(std::ve
#ifndef HEADER_H
#define HEADER_H
#include <vector>
namespace Functions{
class MyClass
{
public:
void fun(std::vector<char*> vect);
};
}
#endif
#ifndef头
#定义标题
#包括
命名空间函数{
类MyClass
{
公众:
void-fun(std::vector-vect);
};
}
#恩迪夫
.cpp文件:
void Functions::MyClass::fun(std::vector<char*> vect){
vect.push_back("value 1");
vect.push_back("Save File Name");
}
void函数::MyClass::fun(std::vector vect){
向量推回(“值1”);
向量推回(“保存文件名”);
}
Main.cpp
#include "Header.h"
#include <vector>
int main(){
std::vector<char*>vect;
Functions::MyClass::fun(vect);
return 0;
}
#包括“Header.h”
#包括
int main(){
std::vectorvect;
函数::MyClass::fun(vect);
返回0;
}
您正在调用fun()
成员函数,就好像它是一个静态函数一样。因为它是一个常规成员函数,所以您应该创建一个对象来调用它:
Functions::MyClass m;
m.fun(vect);
如果您的函数不需要处理它所属类的任何具体实例,则可以将其声明为static
。这将允许您以当前的方式调用它
此外,正如其他人已经指出的,通过引用传递向量可能是一个好主意:
你有两个问题:
fun
,请执行以下操作:
int main(){
Functions::MyClass a;
std::vector<char*>vect;
a.fun(vect);
return 0;
}
当然,声明也应该相应地更改。您可能希望通过引用传递该向量。创建一个类的对象并将该向量作为引用传递给它。如果选择我,我将接受此答案。在<>代码> STD::String ,我没有注意到<代码> Char *的用法。OP:请考虑接受Andy Prowl的答案而不是我的答案,因为它更详细,也提出了另一个重要的改进。
#include <string> // Requires for std::string
// ...
void Functions::MyClass::fun(std::vector<std::string>& vect)
// ^^^^^^^^^^^
{
vect.push_back("value 1");
vect.push_back("Save File Name");
}
int main(){
Functions::MyClass a;
std::vector<char*>vect;
a.fun(vect);
return 0;
}
void Functions::MyClass::fun(std::vector<char*>& vect){
vect.push_back("value 1");
vect.push_back("Save File Name");
}