gpt4 book ai didi

c++ - setter 和 getter 中的引用和指针。需要例子

转载 作者:行者123 更新时间:2023-11-27 23:00:15 25 4
gpt4 key购买 nike

当我尝试在 C++ 中使用返回引用或指针时,我一整天都遇到错误。请告诉我应该在下面的代码中更改什么以通过引用或指针返回 Config 类成员。

#include <cstdlib>
#include <iostream>

using namespace std;

class JustExample {
public:
string someText;
JustExample() {
someText = "blablabla";
}
};

class Config
{
public:
Config();
string getResourceDir() const;
JustExample getExmp() { return exmp; }
void setResourceDir(const string& dir);
void setExmp(JustExample example) { exmp = example; }
private:
JustExample exmp;
string res_dir;
};

Config::Config() {
res_dir = "class value";
}
string Config::getResourceDir() const { return res_dir; }
void Config::setResourceDir(const string& dir) { res_dir = dir; }

int main(int argc, char *argv[])
{
Config cfg;
cout << cfg.getResourceDir() << endl;
cfg.setResourceDir("changed");
cout << cfg.getResourceDir() << endl;

cout << cfg.getExmp().someText << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

奖金问题。为什么我不能在变量声明后对其进行初始化,而是必须在类构造函数中为其赋值,否则会出现错误。

8 D:\projects\dev-cpp test\main.cpp ISO C++ forbids initialization of member `someText' 8 D:\projects\dev-cpp test\main.cpp making `someText' static 8 D:\projects\dev-cpp test\main.cpp invalid in-class initialization of static data member of non-integral type `std::string'  D:\projects\dev-cpp test\main.cpp In function `int main(int, char**)': 38 D:\projects\dev-cpp test\main.cpp 'class JustExample' has no member named 'someText'  D:\projects\dev-cpp test\Makefile.win [Build Error]  [main.o] Error 1 

最佳答案

您提供的代码在 mac OS X 上使用 clang 编译没有错误。但是我看不到你在哪里返回引用或指针,在 Config 中你可以这样做:

class Config
{
public:
Config();
const string& getResourceDir() const;
const JustExample& getExmp() { return exmp; }
void setResourceDir(const string& dir);
void setExmp(const JustExample& example) { exmp = example; }
private:
JustExample exmp;
string res_dir;
};

指针返回类似,只是将 & 替换为 *,尽管在这种情况下返回引用可能更好。

关于c++ - setter 和 getter 中的引用和指针。需要例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com