2015-09-05 79 views
2

我對C++相當陌生,我試圖用一個名爲FlexString的容器類構建一個鏈表。在main()我想通過簡單地說實例化FlexString類:「FlexString flex_str = new FlexString();」調用構造函數等,但它不會編譯,錯誤是在底部。這裏是我的代碼:C++錯誤:轉換爲非標量類型請求?

//FlexString.h file 
#ifndef FLEXSTRING_CAMERON_H 
#define FLEXSTRING_CAMERON_H 
#include "LinkedList.h" 
#include <string> 

using namespace std; 
using oreilly_A1::LinkedList; 

namespace oreilly_A1 { 
class FlexString { 
public: 

    FlexString(); 
    void store(std::string& s); 
    size_t length(); 
    bool empty(); 
    std::string value(); 
    size_t count(); 




private: 

    LinkedList data_list; 

}; 
} 
#endif 

下面是FlexString類.cpp文件:

#include "FlexString.h" 
#include "LinkedList.h" 
#include <string> 

using namespace std; 

namespace oreilly_A1 { 
    FlexString::FlexString() { 

    } 

    void FlexString::store(string& s) { 
     data_list.list_head_insert(s); 
    } 

    std::string value() { 
     data_list.list_getstring(); 
    } 

} 

這裏的主程序文件。

#include <iostream> 
#include <cstdlib> 
#include "FlexString.h" 

using namespace std; 
using oreilly_A1::FlexString; 

int main() { 

    FlexString flex_str = new FlexString(); 
    cout << "Please enter a word: " << endl; 
    string new_string; 
    cin >> new_string; 

    flex_str.store(new_string); 

    cout << "The word you stored was: "+ flex_str.value() << endl; 

} 

錯誤:轉換,從 'oreilly_A1 :: FlexString *' 來要求的非標型 'oreilly_A1 :: FlexString'。 「FlexString flex_str = new FlexString();」

回答

8
FlexString flex_str = new FlexString(); 

是錯誤的,因爲作業的RHS是指向FlexString的指針,而LHS是對象。

您可以使用:

// Use the default constructor to construct an object using memory 
// from the stack. 
FlexString flex_str; 

// Use the default constructor to construct an object using memory 
// from the free store. 
FlexString* flex_str = new FlexString(); 
相關問題