小编Bar*_*ide的帖子

为什么结构内部的对象初始化不同?

我创建了一个类Point,这里是对应的hpp文件。

#ifndef POINT
#define POINT
class Point
{
 protected:
 int x;
 int y;
 public:
 Point(int x = 10, int y = 10);
 void movePoint(int moveX, int moveY);
 void printCoordinates();
};
#endif
Run Code Online (Sandbox Code Playgroud)

我注意到在 main 中,我可以声明一个对象并以这种方式初始化它:

Point myPoint(1, 1);
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个包含两个点的结构,它不会让我以这种方式初始化它,相反,我必须使用大括号,这样:

struct segment
{
 Point point1 = {0, 0};
 Point point2 = {15, 15};
};
Run Code Online (Sandbox Code Playgroud)

这是为什么?

c++ struct initialization member-initialization c++11

2
推荐指数
1
解决办法
64
查看次数

Rust 警告从未使用过的函数,但该函数已被使用

这是我的src文件夹结构

src/
|-- main.rs
|-- problems
|   |-- mod.rs
|   |-- p1.rs
|   `-- p2.rs
`-- utilities.rs
Run Code Online (Sandbox Code Playgroud)

我的文件包含我在和utilities.rs中使用的 2 个函数。在 和 中都是行p1.rsp2.rsp1.rsp2.rs

#[path = "../utilities.rs"]
mod utilities;
Run Code Online (Sandbox Code Playgroud)

据我了解,允许我使用中定​​义的函数 中utilities.rs 定义的两个函数utilities.rs

pub fn get_lines(num: &str) -> Vec<String> {...}
pub fn split(s: &String, separator: &str) -> Vec<String> {...}
Run Code Online (Sandbox Code Playgroud)

p2.rs我同时使用它们,但在p1.rs我只使用get_lines. split当我运行或构建时,这会导致货物警告我“从未使用过”的功能,它是。但该函数已被使用,而且不仅在从未调用的函数中,所以我不明白为什么货物会警告我。看来我必须在包含自制模块的每个文件中使用每个模块函数,因为如果我确实调用,splitp1.rs警告就会消失。我不明白什么?

更清楚地说,问题是当我cargo run得到以下内容时

warning: function is never used: `split` …
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

1
推荐指数
1
解决办法
957
查看次数