微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

返回类成员的常量指针

如何解决返回类成员的常量指针

我是 C++ 新手,我正在尝试理解以下 C++ 代码

文件import React,{ useState } from 'react'; const App = () => { const [NewTaskText,setNewTaskText] = useState(''); const [Tasks,setTasks] = useState(['do a task','samira']); const addTask = () => { if (!NewTaskText) return; setTasks((currentTasks) => { return [...currentTasks,NewTaskText]; }); setNewTaskText(''); }; const onchangeInput = (e) => { const value = e.target.value; setNewTaskText(value); }; return ( <div className="row"> <form> <div className="row col s6"> <div className="input-field col s10"> <textarea id="textarea1" className="materialize-textarea" value={NewTaskText} onChange={onchangeInput} ></textarea> <label htmlFor="textarea1">What needs to be done ?</label> </div> </div> </form> <div className="row col s6"> <br></br> <a className="waves-effect waves-light btn" href="/#"> <i className="material-icons left" onClick={addTask}> add_circle </i> Add </a> </div> <div className="row"> <div className="row col s9"> <ul className="collection with-header"> <li className="collection-header"> <h4>Todo List</h4> <form> <div className="input-field"> <input id="search" type="search" required /> <label className="label-icon" htmlFor="search"> <i className="material-icons">search</i>Search </label> <i className="material-icons">close</i> </div> </form> </li> <label> <li className="collection-item"> <input type="checkBox" /> <span>{Tasks.map((item) => item)}</span> <span> <a href="#!" className="secondary-content"> <i className="material-icons">delete</i> <i className="material-icons">check_circle</i> </a> </span> </li> </label> </ul> </div> </div> </div> ); }; export default App;

arr.h

Cpp 文件#include <iostream> using namespace std; #ifndef ARR_H #define ARR_H class arr { private: int n; int *ar; public: arr(); arr(int nn,const int *a); ~arr(); const int *Get_ar() const; }; #endif

arr.cpp

文件#include <iostream> #include "arr.h" using namespace std; arr::arr() { n = 2; ar = new int[2]; ar[0] = 1; ar[1] = 2; } arr::arr(int nn,const int *a) { n = nn; ar = new int[n]; for (int i = 0; i < n; i++) { ar[i] = a[i]; } } const int *arr::Get_ar() const { return ar; } arr::~arr() { delete [] ar; }

main.cpp

编译时出现错误#include <iostream> #include "arr.h" using namespace std; int main() { int n = 3; int *a = new int[3]; a[0] = 1; a[1] = 2; a[2] = 3; int *get_a = new int[3]; arr A(n,a); get_a = A.Get_ar(); return 0; } 。当我用 invalid conversion from 'const int*' to 'int*' 替换 int *get_a 中的 main.cpp 时,它编译得很好。另一方面,如果我从头文件 const int *get_a 和 cpp 文件 const 中的 const int *Get_ar() const删除 arr.h,它编译时不会出错。

我不明白,为什么我在保持代码不变的情况下会出现编译器错误。特别是,我不明白 arr.cpp 到底返回了什么。

如有解释,我将不胜感激。

最好的, 菲尔

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。