C++ writing object data to file
$begingroup$
I'm trying to write a program that stores usernames and passwords. So I have created a Record class. Each record has an id, title, username, and password field. I want to write each record to a text file.
However, I am having some issues. When I compile I get the following errors.
'Record::getTitle': non-standard syntax; use '&' to create a pointer to member
'Record::getUsername': non-standard syntax; use '&' to create a pointer to member
'Record::getPassword': non-standard syntax; use '&' to create a pointer to member
The problem:
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
The getTitle(and others) return a string. So I am not sure why this isn't working. Any suggestions would be appreciated.
Complete code (so far) below..
#include <iostream>
#include <string>
#include <fstream>
#include <map>
#include <functional>
using namespace std;
string GetInput();
void MainMenu();
void Title();
void AddRecord();
void writeToFile(string title, string username, string password);
class Record {
private:
string id;
string title;
string username;
string password;
static int numberOfRecords;
public:
void setTitle(string title) {
this->title = title;
}
string getTitle() {
return title;
}
void setUsername(string username) {
this->username = username;
}
string getUsername() {
return username;
}
void setPassword(string password) {
this->password = password;
}
string getPassword() {
return password;
}
static int GetNumberOfRecords() {
return numberOfRecords;
}
};
struct MenuAction {
string description;
function<void()> action;
};
static const map <string, MenuAction> actionTable{
{ "1",{ "Add entry", () { AddRecord(); } } },
{ "2",{ "Edit entry", () { cout << "Edit entry" << "n"; } } },
{ "q",{ "Quit", () { cout << "Quit" << "n"; } } }
};
int main() {
Title();
MainMenu();
return 0;
}
void Title() {
cout << "======================================n"
"| Database |n"
"======================================nn";
}
void MainMenu() {
for (auto const& x : actionTable) {
cout << x.first << ". " << (x.second).description << "n";
}
string input;
while (actionTable.count(input) == 0) {
input = GetInput();
}
actionTable.at(input).action();
}
void AddRecord() {
cout << "============= Add Record ============" << endl << endl;
string id;
string title;
string username;
string password;
cout << "Title: ";
getline(cin, title);
cout << "Username: ";
getline(cin, username);
cout << "Password: ";
getline(cin, password);
Record firstRecord;
firstRecord.setTitle(title);
firstRecord.setUsername(username);
firstRecord.setPassword(password);
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
}
string GetInput() {
string s = "";
cout << ">> ";
getline(cin, s);
return s;
}
void writeToFile(string title, string username, string password) {
ofstream outFile;
outFile.open("database.txt", ios_base::app);
outFile << title << "t" << username << "t" << password << "n";
cout << "============= Record Added To Database ============" << endl;
}
Feel free to comment or nag other portions of my code :)
c++ beginner object-oriented
New contributor
$endgroup$
add a comment |
$begingroup$
I'm trying to write a program that stores usernames and passwords. So I have created a Record class. Each record has an id, title, username, and password field. I want to write each record to a text file.
However, I am having some issues. When I compile I get the following errors.
'Record::getTitle': non-standard syntax; use '&' to create a pointer to member
'Record::getUsername': non-standard syntax; use '&' to create a pointer to member
'Record::getPassword': non-standard syntax; use '&' to create a pointer to member
The problem:
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
The getTitle(and others) return a string. So I am not sure why this isn't working. Any suggestions would be appreciated.
Complete code (so far) below..
#include <iostream>
#include <string>
#include <fstream>
#include <map>
#include <functional>
using namespace std;
string GetInput();
void MainMenu();
void Title();
void AddRecord();
void writeToFile(string title, string username, string password);
class Record {
private:
string id;
string title;
string username;
string password;
static int numberOfRecords;
public:
void setTitle(string title) {
this->title = title;
}
string getTitle() {
return title;
}
void setUsername(string username) {
this->username = username;
}
string getUsername() {
return username;
}
void setPassword(string password) {
this->password = password;
}
string getPassword() {
return password;
}
static int GetNumberOfRecords() {
return numberOfRecords;
}
};
struct MenuAction {
string description;
function<void()> action;
};
static const map <string, MenuAction> actionTable{
{ "1",{ "Add entry", () { AddRecord(); } } },
{ "2",{ "Edit entry", () { cout << "Edit entry" << "n"; } } },
{ "q",{ "Quit", () { cout << "Quit" << "n"; } } }
};
int main() {
Title();
MainMenu();
return 0;
}
void Title() {
cout << "======================================n"
"| Database |n"
"======================================nn";
}
void MainMenu() {
for (auto const& x : actionTable) {
cout << x.first << ". " << (x.second).description << "n";
}
string input;
while (actionTable.count(input) == 0) {
input = GetInput();
}
actionTable.at(input).action();
}
void AddRecord() {
cout << "============= Add Record ============" << endl << endl;
string id;
string title;
string username;
string password;
cout << "Title: ";
getline(cin, title);
cout << "Username: ";
getline(cin, username);
cout << "Password: ";
getline(cin, password);
Record firstRecord;
firstRecord.setTitle(title);
firstRecord.setUsername(username);
firstRecord.setPassword(password);
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
}
string GetInput() {
string s = "";
cout << ">> ";
getline(cin, s);
return s;
}
void writeToFile(string title, string username, string password) {
ofstream outFile;
outFile.open("database.txt", ios_base::app);
outFile << title << "t" << username << "t" << password << "n";
cout << "============= Record Added To Database ============" << endl;
}
Feel free to comment or nag other portions of my code :)
c++ beginner object-oriented
New contributor
$endgroup$
add a comment |
$begingroup$
I'm trying to write a program that stores usernames and passwords. So I have created a Record class. Each record has an id, title, username, and password field. I want to write each record to a text file.
However, I am having some issues. When I compile I get the following errors.
'Record::getTitle': non-standard syntax; use '&' to create a pointer to member
'Record::getUsername': non-standard syntax; use '&' to create a pointer to member
'Record::getPassword': non-standard syntax; use '&' to create a pointer to member
The problem:
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
The getTitle(and others) return a string. So I am not sure why this isn't working. Any suggestions would be appreciated.
Complete code (so far) below..
#include <iostream>
#include <string>
#include <fstream>
#include <map>
#include <functional>
using namespace std;
string GetInput();
void MainMenu();
void Title();
void AddRecord();
void writeToFile(string title, string username, string password);
class Record {
private:
string id;
string title;
string username;
string password;
static int numberOfRecords;
public:
void setTitle(string title) {
this->title = title;
}
string getTitle() {
return title;
}
void setUsername(string username) {
this->username = username;
}
string getUsername() {
return username;
}
void setPassword(string password) {
this->password = password;
}
string getPassword() {
return password;
}
static int GetNumberOfRecords() {
return numberOfRecords;
}
};
struct MenuAction {
string description;
function<void()> action;
};
static const map <string, MenuAction> actionTable{
{ "1",{ "Add entry", () { AddRecord(); } } },
{ "2",{ "Edit entry", () { cout << "Edit entry" << "n"; } } },
{ "q",{ "Quit", () { cout << "Quit" << "n"; } } }
};
int main() {
Title();
MainMenu();
return 0;
}
void Title() {
cout << "======================================n"
"| Database |n"
"======================================nn";
}
void MainMenu() {
for (auto const& x : actionTable) {
cout << x.first << ". " << (x.second).description << "n";
}
string input;
while (actionTable.count(input) == 0) {
input = GetInput();
}
actionTable.at(input).action();
}
void AddRecord() {
cout << "============= Add Record ============" << endl << endl;
string id;
string title;
string username;
string password;
cout << "Title: ";
getline(cin, title);
cout << "Username: ";
getline(cin, username);
cout << "Password: ";
getline(cin, password);
Record firstRecord;
firstRecord.setTitle(title);
firstRecord.setUsername(username);
firstRecord.setPassword(password);
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
}
string GetInput() {
string s = "";
cout << ">> ";
getline(cin, s);
return s;
}
void writeToFile(string title, string username, string password) {
ofstream outFile;
outFile.open("database.txt", ios_base::app);
outFile << title << "t" << username << "t" << password << "n";
cout << "============= Record Added To Database ============" << endl;
}
Feel free to comment or nag other portions of my code :)
c++ beginner object-oriented
New contributor
$endgroup$
I'm trying to write a program that stores usernames and passwords. So I have created a Record class. Each record has an id, title, username, and password field. I want to write each record to a text file.
However, I am having some issues. When I compile I get the following errors.
'Record::getTitle': non-standard syntax; use '&' to create a pointer to member
'Record::getUsername': non-standard syntax; use '&' to create a pointer to member
'Record::getPassword': non-standard syntax; use '&' to create a pointer to member
The problem:
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
The getTitle(and others) return a string. So I am not sure why this isn't working. Any suggestions would be appreciated.
Complete code (so far) below..
#include <iostream>
#include <string>
#include <fstream>
#include <map>
#include <functional>
using namespace std;
string GetInput();
void MainMenu();
void Title();
void AddRecord();
void writeToFile(string title, string username, string password);
class Record {
private:
string id;
string title;
string username;
string password;
static int numberOfRecords;
public:
void setTitle(string title) {
this->title = title;
}
string getTitle() {
return title;
}
void setUsername(string username) {
this->username = username;
}
string getUsername() {
return username;
}
void setPassword(string password) {
this->password = password;
}
string getPassword() {
return password;
}
static int GetNumberOfRecords() {
return numberOfRecords;
}
};
struct MenuAction {
string description;
function<void()> action;
};
static const map <string, MenuAction> actionTable{
{ "1",{ "Add entry", () { AddRecord(); } } },
{ "2",{ "Edit entry", () { cout << "Edit entry" << "n"; } } },
{ "q",{ "Quit", () { cout << "Quit" << "n"; } } }
};
int main() {
Title();
MainMenu();
return 0;
}
void Title() {
cout << "======================================n"
"| Database |n"
"======================================nn";
}
void MainMenu() {
for (auto const& x : actionTable) {
cout << x.first << ". " << (x.second).description << "n";
}
string input;
while (actionTable.count(input) == 0) {
input = GetInput();
}
actionTable.at(input).action();
}
void AddRecord() {
cout << "============= Add Record ============" << endl << endl;
string id;
string title;
string username;
string password;
cout << "Title: ";
getline(cin, title);
cout << "Username: ";
getline(cin, username);
cout << "Password: ";
getline(cin, password);
Record firstRecord;
firstRecord.setTitle(title);
firstRecord.setUsername(username);
firstRecord.setPassword(password);
writeToFile(firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword);
}
string GetInput() {
string s = "";
cout << ">> ";
getline(cin, s);
return s;
}
void writeToFile(string title, string username, string password) {
ofstream outFile;
outFile.open("database.txt", ios_base::app);
outFile << title << "t" << username << "t" << password << "n";
cout << "============= Record Added To Database ============" << endl;
}
Feel free to comment or nag other portions of my code :)
c++ beginner object-oriented
c++ beginner object-oriented
New contributor
New contributor
New contributor
asked 1 hour ago
okkv1747vmokkv1747vm
183
183
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword
The params you are passing into your function are not properties, they are functions (getters) of your object.
You need to access them like functions:
writeToFile(firstRecord.getTitle(), firstRecord.getUsername(), firstRecord.getPassword());
New contributor
$endgroup$
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
okkv1747vm is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215890%2fc-writing-object-data-to-file%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword
The params you are passing into your function are not properties, they are functions (getters) of your object.
You need to access them like functions:
writeToFile(firstRecord.getTitle(), firstRecord.getUsername(), firstRecord.getPassword());
New contributor
$endgroup$
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
add a comment |
$begingroup$
firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword
The params you are passing into your function are not properties, they are functions (getters) of your object.
You need to access them like functions:
writeToFile(firstRecord.getTitle(), firstRecord.getUsername(), firstRecord.getPassword());
New contributor
$endgroup$
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
add a comment |
$begingroup$
firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword
The params you are passing into your function are not properties, they are functions (getters) of your object.
You need to access them like functions:
writeToFile(firstRecord.getTitle(), firstRecord.getUsername(), firstRecord.getPassword());
New contributor
$endgroup$
firstRecord.getTitle, firstRecord.getUsername, firstRecord.getPassword
The params you are passing into your function are not properties, they are functions (getters) of your object.
You need to access them like functions:
writeToFile(firstRecord.getTitle(), firstRecord.getUsername(), firstRecord.getPassword());
New contributor
New contributor
answered 1 hour ago
DoopweeDoopwee
241
241
New contributor
New contributor
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
add a comment |
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
$begingroup$
Wow. That was an embarrassing mistake. Thanks for the help!
$endgroup$
– okkv1747vm
1 hour ago
add a comment |
okkv1747vm is a new contributor. Be nice, and check out our Code of Conduct.
okkv1747vm is a new contributor. Be nice, and check out our Code of Conduct.
okkv1747vm is a new contributor. Be nice, and check out our Code of Conduct.
okkv1747vm is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215890%2fc-writing-object-data-to-file%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown