簡體   English   中英

C ++我一直得到“未在此范圍內聲明錯誤”

[英]C++ I keep getting “was not declared in this scope error”

所以,我有一個頭文件和一個類文件。 但是當我編譯puzzle.cpp ,我一直沒有在這個范圍內聲明get_solution 我不明白為什么會發生錯誤,因為它在同一個類中,所以我可以在同一個類中調用任何函數。 有人可以幫我這個嗎? 謝謝!

puzzle.h

#ifndef PUZZLE_H
#define PUZZLE_H

#include<iostream>
#include <string>
#include <vector>

class puzzle{
private:
    std::string _solution;
    std::vector<bool> _guesses;
public:
    puzzle(std::string solution);
    std::string get_solution(){return _solution;}
    bool guess(char c);
    bool solve(std::string proposed_solution);
    std::string to_string();
};

#endif

puzzle.cpp

#include <iostream>
#include "puzzle.h"
#include <string>
#include <vector>

using namespace std;

puzzle::puzzle(std::string solution) {
    _solution = solution;
   for(int i = 0; i < 256; i++)
      _guesses.push_back(false);
}

bool puzzle::guess(char c){
    int num = c;
    if(c<='z' || c>='a')
        if(_guesses.at(c) == false){
          _guesses.at(c) == true;
           return true;
       }
    return false;
}

bool solve(string proposed_solution){
    string test = get_solution();
    if(proposed_solution.compare(test) == 0)
       return true;
    return false;
}

string to_string(){
   int len = get_solution().length();
   return "";
}

它看起來像你忘了做solveto_string成員函數:

更改

string to_string(){ ...
bool solve(string proposed_solution){ ...
    ^^^

string puzzle::to_string(){ ...
bool puzzle::solve(string proposed_solution){ ...

你的函數bool solve(string proposed_solution)沒有定義puzzle的成員函數,而是一個“普通”函數; 因此, get_solution(); 在它的身體內也不被認為是puzzle一員。 你將不得不寫bool puzzle::solve(string proposed_solution) { ...它應該有效。

solveto_string應該是方法,所以你需要在它們前面添加類名稱后跟兩個冒號(即puzzle:: :):

bool puzzle::solve(string proposed_solution){
    // Code ...
}

string puzzle::to_string(){
    // Code ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM