可我在这段错误发生前用的是class定义的一个类,类是这么定义的:class ai_model{ public: string modeln=""; void init_model(string in); void create_point(int code,string in); string get_point(int code); bool load_model(string filename); void out_model(string filename); void set_point(int code,string in); void del_point(int code); string out_modeln(); }; , 而编译器编译一段代码string run_model_copy=ai_model.out_modeln();时发生了这个报错,请问要如何解决?
时间: 2024-03-03 18:50:44 浏览: 89
Caused by: android.os.NetworkOnMainThreadException错误解决办法
在这个问题中,你使用了类名来调用类的成员函数,这是不正确的。在 C++ 中,我们需要先创建一个类的对象,然后使用该对象来调用类的成员函数。因此,你需要创建一个 `ai_model` 类的对象,然后使用该对象来调用 `out_modeln()` 函数。例如:
```
ai_model myModel;
string run_model_copy = myModel.out_modeln();
```
在上面的代码中,我们创建了一个名为 `myModel` 的 `ai_model` 类对象,并使用该对象来调用 `out_modeln()` 函数,将返回值赋给了 `run_model_copy` 变量。
如果你希望直接使用类名来调用成员函数,可以将 `out_modeln()` 函数声明为静态函数。静态函数属于类,而不是类的对象,可以使用类名来直接调用。例如:
```
class ai_model {
public:
static string out_modeln();
};
string run_model_copy = ai_model::out_modeln();
```
在上面的代码中,我们将 `out_modeln()` 函数声明为静态函数,并使用 `ai_model::` 来直接调用该函数。注意,静态函数可以直接访问类的静态成员变量,但不能访问非静态成员变量。
阅读全文