2017-09-26 109 views
0

我有一個頭文件:'MYV' 沒有指定類型

#include <iostream> 

class A 
{ 
    int m_a; 
    public: 
     A(int a); 
}; 

和源文件a.cpp

#include "a.h" 
#include <vector> 
#include <string> 

using namespace std; 

vector<string>myV; 
myV.push_back("a"); 

A::A(int a) 
{ 
    m_a = a; 
} 

我在編譯上述程序CentOs-7.2使用:g ++ a.cpp

編譯上述程序米我得到這個錯誤:

a.cpp:8:1: error: ‘myV’ does not name a type 
myV.push_back("a"); 

任何人都可以幫助我在這個錯誤?

+2

你不能任何功能之外運行的代碼,所以編譯器是治療'myV'作爲一個類型,而解析。 – whoan

+0

你可以_declare_在函數之外的東西,但是你不能調用它們的函數(即你的'myV'聲明沒問題,但是'push_back'不是) – Tas

回答

2

正如評論者指出的那樣,您不能在函數外的對象上調用函數。你只能聲明對象。幸運的是,你可以在同一個語句初始化myV

vector<string> myV { "a" }; 
2

C++不是一種腳本語言,大多數的運行方法應被放入一個函數調用。

只能定義的函數外全局變量,函數和類調用

A::A(int a) 
{ 
    vector<string>myV; 
    myV.push_back("a"); 
    m_a = a; 
}