//main.cpp
#include "Fiction.h"
using namespace std;
int main()
{
int choice =-1;
while (choice != 0)
{
displayMenu();
cin >> choice;
cin.ignore();
switch (choice)
{
//case 1-3 exclude for not having anything in them yet.
case 4: system("cls"); //add a book this has to come first
{ cout << "Enter the title of the book" << endl;
string userChoice;
getline(cin, userChoice);
Fiction().addBook(userChoice);
}
default: cout << "thats not a choice" << endl;
}
}
system("pause");
return 0;
}
//Fiction.h
#pragma once
#include<string>
#include<vector>
class Fiction
{
private:
std::vector<std::string> _fictionBook;
public:
Fiction();
~Fiction();
void addBook(std::string title);
};
//Fiction.cpp
#include "Fiction.h"
Fiction::Fiction()
{
}
Fiction::~Fiction()
{
}
void Fiction::addBook(std::string title)
{
_fictionBook.push_back(title);
}
我遇到的问题是我无法将任何东西推回到_fictionBook中。这并没有阻止代码运行,视觉工作室中的监视选项卡就是告诉我标识符&#34; _fictionBook&#34;未定义。我花了很多时间寻找答案,但我似乎无法找到答案。我能得到的任何帮助都将不胜感激。
更新:刚刚检查过我没有调试&#34;发布模式&#34;
更新:_fictionBook未显示在本地标签
中答案 0 :(得分:0)
我看到的一个问题是您没有在addBook(string)
对象上调用Fiction
。您永远不会声明要应用操作的Fiction
对象...您可以在Fiction()
上调用它吗?你不应该对不存在的变量进行操作(这个变量不存在,它甚至没有名字)。
如果您尝试以下main.cpp
,它会声明一个Fiction
对象并向其添加一本书而不会出现问题:
//main.cpp
#include "Fiction.h"
using namespace std;
int main() {
string userChoice("Kill six billion demons, by Abbadon");
Fiction myBooksOfFiction;
myBooksOfFiction.addBook(userChoice);
return 0;
}
Visual Studio告诉您标识符_fictionBook
未定义的原因是因为没有这样的标识符。 _fictionBook
是类Fiction
的数据成员。您必须声明Fiction
对象并通过该对象访问数据成员。
另请注意,您提供的代码是调用您未提供的功能(displayMenu()
),但与您的问题无关。我想这应该是对你的问题的评论,但我觉得很重要的是在这里写一下你所提供的代码至少部分是因为这一点而构建的。