gpt4 book ai didi

c++ - 使用类中的方法作为运算符为类的私有(private)成员赋值

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:58 26 4
gpt4 key购买 nike

伙计们,我正在尝试使用类中的方法来为该类的私有(private)成员赋值。我想不出这个来拯救我的后肢。谁能指出显而易见的地方?

#include <cstdlib>
#include <cstdio>
using namespace std;
class NoClass {
public:
NoClass() { };
NoClass(const NoClass& orig) { };
virtual ~NoClass() { };
void SetAnInt() {
this->anInt = ???;
}
int GetAnInt() {
return this->anInt;
}
private:
int anInt;
};


int main(int argc, char** argv) {
NoClass *nc = new NoClass();
nc->SetAnInt() = 133; // Important part here
printf("%d\n", nc->GetAnInt());
return 0;
}

最佳答案

只是为了好玩,你可以这样做:

#include <cstdlib>
#include <cstdio>
using namespace std;
class NoClass {
public:
NoClass() { };
NoClass(const NoClass& orig) { };
virtual ~NoClass() { };

int& SetAnInt() {
return anInt;
}

int GetAnInt() {
return this->anInt;
}
private:
int anInt;
};


int main(int argc, char** argv) {
NoClass *nc = new NoClass();
nc->SetAnInt() = 133; // Important part here
printf("%d\n", nc->GetAnInt());
return 0;
}

请注意,这利用语言来克服数据隐藏,这是面向对象编程的基石之一。这不好。就像,真的,真的很糟糕。所以,不要这样做。但是你可以。我很想听听你的教授是怎么说的。

此外,无关的 this-> 会损害代码的可读性,这不是 java.lang.

关于c++ - 使用类中的方法作为运算符为类的私有(private)成员赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652329/

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