我想在我的c ++代码中向向量添加一些值,但每次我尝试将向量发送到main.cpp文件中的函数时,它都用红色加下来并说:
A nonstatic member reference mus be relative to a specific object.
Run Code Online (Sandbox Code Playgroud)
在我的标题中:
#ifndef HEADER_H
#define HEADER_H
#include <vector>
namespace Functions{
class MyClass
{
public:
void fun(std::vector<char*> vect);
};
}
#endif
Run Code Online (Sandbox Code Playgroud)
.cpp文件:
void Functions::MyClass::fun(std::vector<char*> vect){
vect.push_back("value 1");
vect.push_back("Save File Name");
}
Run Code Online (Sandbox Code Playgroud)
Main.cpp的
#include "Header.h"
#include <vector>
int main(){
std::vector<char*>vect;
Functions::MyClass::fun(vect);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
And*_*owl 10
您正在调用您的fun()成员函数,就好像它是一个静态函数.因为它是一个常规的成员函数,所以你应该创建一个可以调用它的对象:
Functions::MyClass m;
m.fun(vect);
Run Code Online (Sandbox Code Playgroud)
如果您的函数不需要处理它所属的类的任何具体实例,则可以将其声明为static.这样你就可以按照当前的方式调用它.
此外,正如其他人已经指出的那样,通过引用传递向量可能是一个好主意:
void fun(std::vector<char*>& vect)
// ^
Run Code Online (Sandbox Code Playgroud)
按值传递将创建参数的副本vect,这意味着调用函数在调用后不会看到任何副作用fun().
另外,一个好主意是使用std::string而不是指针char(特别是如果没有const):
#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");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |