我有一个关于C ++类和实例化的问题。以下代码的输出如下:
Poco库快速参考:http://pocoproject.org/docs/
这是一个测试 EXITING
我希望输出为:
这是一个测试
用户名
退出
基本上,myCreds打印出来的原因是什么? 代码:
#include <iostream>
#include <string>
#include <Poco/Net/HTTPBasicCredentials.h>
using namespace std;
class myTest{
public:
string test;
Poco::Net::HTTPBasicCredentials myCreds;
myTest();
};
myTest::myTest(){
test = "this is a test";
Poco::Net::HTTPBasicCredentials myCreds("username", "password");
}
int main(){
myTest thisTest;
cout << thisTest.test << "\n";
cout << thisTest.myCreds.getUsername() << "\n";
cout << "EXITING" << "\n";
}
感谢您的帮助 [R
答案 0 :(得分:2)
您有两个myCreds
个实例:一个属于thisTest
,另一个在myTest
的构造函数体内创建和销毁。
您应该将myCreds的构造函数编写为folows(以正确地初始化成员myCreds
):
myTest::myTest()
: test("this is a test")
, myCreds("username", "password")
{
}
答案 1 :(得分:1)
您在类构造函数中将myCred声明为局部变量,从而覆盖类中的公共变量。当构造函数返回时,局部变量会消失。
答案 2 :(得分:0)
您的构造函数正在创建自己的myCreds
,而不是初始化成员变量。
答案 3 :(得分:0)
看起来您正在重新创建HTTPBasicCredentials
的本地实例,而不是在此处初始化您的公共成员:
myTest::myTest(){
test = "this is a test";
Poco::Net::HTTPBasicCredentials myCreds("username", "password");
}
构造函数中的myCreds实例将在构造完成时创建并抛弃。
初始化您的公共成员。