说我有以下课程:
class Abc { int id; public: int getID() { return id; } int setID(int id) { this->id = id; } };
这有什么逻辑错误吗?我似乎得到了意想不到的结果(读取:id的错误值).我知道这不是编写getter的方法..但是在这段代码中仍然没有任何错误?
这是类声明:
class ClientConn { static int num; short pos; sockaddr_in tcpAddress; sockaddr_in udpAddress; int connFD; public: ClientConn(); int getConnFD(); void setConnFD(int connFD); void setPos(short pos); short const& getPos(); void setUdpAddress(short port); void setTcpAddress(sockaddr_in address); void setUdpAddress(sockaddr_in address); void setTcpAddress(short port, char* serverIP); void setUdpAddress(short port, char * serverIP); sockaddr_in const& getTcpAddress() const; sockaddr_in const& getUdpAddress() const; };
这两个功能的定义如下:
int ClientConn :: getConnFD() { return connFD; } void ClientConn :: setConnFD(int connFD) { this->connFD = connFD; }
我使用setter将connFD的值设置为7,然后当我使用getter时,我得到值65534.
(我应该回答我的问题还是继续编辑我的帖子?我是新的)
几点说明:
int getID()应该是一个const方法.
为什么setID()有一个int返回类型?它不返回值.这甚至如何编译?
你确定意外结果是因为getter/setter吗?你有一个简短的测试程序来证明这个问题吗?
编辑:既然你发布了你的代码,我会认为某些东西正在捣乱你的变量.你用的是什么编译器?内存断点是告诉你发生了什么的最快方法.假设这不是一个选项,请将代码撒上调试输出,显示变量的当前值并进行除法和征服,直到找到它被踩到的位置.
此外,您发布的新代码仍未显示任何实际用法.简单的测试程序会有所帮助.
`代码.将其缩进4个空格,或选择它并单击"100101"按钮.
有了更多经验的@Dead,您将了解到您没有时间快速编写代码.
2> Xavier V...:int setID(int id) { this->id = id; }应该被替换
void setID(int id) { this->id = id; }你应该声明一个构造函数来初始化id的值.