2017-04-16 35 views
0

我想在另一个类中有一个类的实例。如果我在主程序中创建对象,一切都很好。如果我在第13行前删除评论,我收到消息C++ instanciation

g++ MyMWE.cpp 
MyMWE.cpp:13:14: error: expected identifier before string constant 
    delay1 DTT("DELAY1", 6); 
      ^

如果我在主程序或类中instanciate有什么区别?而且,编译器期望什么标识符?我错了什么?

#include <string> 

class delay1 { 
public: 
    delay1(std::string name, int t_){} 
    int t; 
}; 

class delay2 { 
public: 
    delay2(std::string name, int t_){} 
    int t; 
// delay1 DTT("DELAY1", 6); 
}; 

int main(int argc, char* argv[]) { 
    delay1 DTT("DELAY1", 6); 
    return(0); 
} 

回答

2

在一流的初始化必须使用={}初始化语法:

class delay2 { 
    // ... 
    delay1 DTT{"DELAY1", 6}; 
}; 
+0

谢谢,它的工作原理,但它需要添加 “-std = C++ 11”。否则,我会收到错误消息“扩展初始化程序列表仅在-std = C++ 11中可用”。你可以给一个指针,没有开关或使用其他标准有什么效果? – katang

+0

@katang C++ 03根本不支持类中的初始化器。您只能在构造函数的成员初始化列表中初始化成员。 – Quentin