C++ vs 2017中的14个错误我认为与未识别我的课程有关 我已经解决了,现在不需要这个问题,谢谢你的帮助
在vs 2017中,我的程序出现了一些错误,有时去,有时留。我认为这是因为我没有识别我的类,我认为这与#include没有像过去一样正常工作有关。我以前有过一个类似的错误(比如;在标识符之前丢失),当我转发声明而不是#include时,该错误停止了。请帮助 表单类C++ vs 2017中的14个错误我认为与未识别我的课程有关 我已经解决了,现在不需要这个问题,谢谢你的帮助,c++,syntax-error,C++,Syntax Error,在vs 2017中,我的程序出现了一些错误,有时去,有时留。我认为这是因为我没有识别我的类,我认为这与#include没有像过去一样正常工作有关。我以前有过一个类似的错误(比如;在标识符之前丢失),当我转发声明而不是#include时,该错误停止了。请帮助 表单类 #pragma once #include "IContain.h" #include <vector> #include "Rect.h" class Form : public IContain { public: F
#pragma once
#include "IContain.h"
#include <vector>
#include "Rect.h"
class Form : public IContain
{
public:
Form();
~Form();
bool paint() override;
bool init() override;
Rect<int> Rect() override;
bool hasfocus() override;
Graphics& getgraphics() override;
bool add(IStaticControl & control) override;
bool remove(IStaticControl & control) override;
bool update() override;
pixelvec mousepos() override;
private:
std::vector<IStaticControl> controls;
#pragma once
#include "Graphics.h"
#include "Rect.h"
#include "IContain.h"
class IStaticControl
{
public:
IStaticControl();
~IStaticControl();
//actions
virtual bool init() = 0;
virtual bool paint(Graphics& gfx) = 0;
virtual void update() = 0; // check for input that matches this' conditions. check container's input
virtual void show() = 0;
virtual void hide() = 0;
//info
virtual Rect<int> rect() = 0;
virtual IContain& Container() = 0;
virtual bool rezizeable() = 0;
virtual bool hasfocus() = 0;
#pragma once
#include <vector>
#include "EventBase.h"
#include <queue>
template<typename EventArgsT>
class Myevent
{
public:
Myevent(size_t handlerCount, size_t instanceCount, std::queue<EventBase>&
eventqueue) : Eventintances(instanceCount), handlers(handlerCount) {this->eventqueue = eventqueue};
~Myevent() {};
inline void raise(EventArgsT args) {eventqueue.push(Inst(args, handlers));};
size_t addhandler(void(*handler)(EventArgsT) , bool& success = false) {
size_t size = handlers.size;
for (size_t i; i >= size; i++) {
if (handlers[i] = NULL) { handlers[i] = handler; success = true;
return i; }
}
return 0;
};
void removehandler(size_t i) { handlers[i] = NULL };
class Inst : EventBase {
EventArgsT args;
public:
Inst(EventArgsT args, std::vector<void(*)(EventArgsT)>& handlers) {
this->args = args;
this->handlers = handlers;
};
// go to each function in handlers and invoke them with args
void process() override {};
private:
std::vector<void(*)(EventArgsT)>& handlers;
};
private:
std::vector<void(*)(EventArgsT)> handlers;
std::vector<Inst> Eventintances;
std::queue<EventBase>& eventqueue;
};
#pragma once
#include "Myevent.h"
#include "graphics.h"
#include "IStaticControl.h"
class IContain
{
public:
virtual bool paint() = 0;
virtual bool init() = 0;
virtual Rect<int> rect() = 0;
virtual bool hasfocus() = 0;
virtual Graphics& getgraphics() = 0;
virtual bool add(IStaticControl & control) = 0;
virtual bool remove(IStaticControl & control) = 0;
virtual bool update() = 0;
virtual pixelvec mousepos() = 0;
// same for keyboard input
private:
};
#pragma一次
#包括“IContain.h”
#包括
#包括“Rect.h”
课程形式:公共IContain
{
公众:
形式();
~Form();
boolpaint()覆盖;
bool init()覆盖;
Rect()重写;
bool hasfocus()覆盖;
Graphics&getgraphics()覆盖;
布尔添加(IStaticControl&control)覆盖;
bool-remove(IStaticControl&control)超控;
bool update()覆盖;
pixelvec mousepos()覆盖;
私人:
病媒控制;
})
控制接口类
#pragma once
#include "IContain.h"
#include <vector>
#include "Rect.h"
class Form : public IContain
{
public:
Form();
~Form();
bool paint() override;
bool init() override;
Rect<int> Rect() override;
bool hasfocus() override;
Graphics& getgraphics() override;
bool add(IStaticControl & control) override;
bool remove(IStaticControl & control) override;
bool update() override;
pixelvec mousepos() override;
private:
std::vector<IStaticControl> controls;
#pragma once
#include "Graphics.h"
#include "Rect.h"
#include "IContain.h"
class IStaticControl
{
public:
IStaticControl();
~IStaticControl();
//actions
virtual bool init() = 0;
virtual bool paint(Graphics& gfx) = 0;
virtual void update() = 0; // check for input that matches this' conditions. check container's input
virtual void show() = 0;
virtual void hide() = 0;
//info
virtual Rect<int> rect() = 0;
virtual IContain& Container() = 0;
virtual bool rezizeable() = 0;
virtual bool hasfocus() = 0;
#pragma once
#include <vector>
#include "EventBase.h"
#include <queue>
template<typename EventArgsT>
class Myevent
{
public:
Myevent(size_t handlerCount, size_t instanceCount, std::queue<EventBase>&
eventqueue) : Eventintances(instanceCount), handlers(handlerCount) {this->eventqueue = eventqueue};
~Myevent() {};
inline void raise(EventArgsT args) {eventqueue.push(Inst(args, handlers));};
size_t addhandler(void(*handler)(EventArgsT) , bool& success = false) {
size_t size = handlers.size;
for (size_t i; i >= size; i++) {
if (handlers[i] = NULL) { handlers[i] = handler; success = true;
return i; }
}
return 0;
};
void removehandler(size_t i) { handlers[i] = NULL };
class Inst : EventBase {
EventArgsT args;
public:
Inst(EventArgsT args, std::vector<void(*)(EventArgsT)>& handlers) {
this->args = args;
this->handlers = handlers;
};
// go to each function in handlers and invoke them with args
void process() override {};
private:
std::vector<void(*)(EventArgsT)>& handlers;
};
private:
std::vector<void(*)(EventArgsT)> handlers;
std::vector<Inst> Eventintances;
std::queue<EventBase>& eventqueue;
};
#pragma once
#include "Myevent.h"
#include "graphics.h"
#include "IStaticControl.h"
class IContain
{
public:
virtual bool paint() = 0;
virtual bool init() = 0;
virtual Rect<int> rect() = 0;
virtual bool hasfocus() = 0;
virtual Graphics& getgraphics() = 0;
virtual bool add(IStaticControl & control) = 0;
virtual bool remove(IStaticControl & control) = 0;
virtual bool update() = 0;
virtual pixelvec mousepos() = 0;
// same for keyboard input
private:
};
#pragma一次
#包括“Graphics.h”
#包括“Rect.h”
#包括“IContain.h”
类静态控制
{
公众:
IStaticControl();
~IStaticControl();
//行动
虚拟bool init()=0;
虚拟布尔绘画(图形和gfx)=0;
virtual void update()=0;//检查与此条件匹配的输入。检查容器的输入
虚拟void show()=0;
虚空隐藏()=0;
//信息
虚拟Rect Rect()=0;
虚拟IContain&容器()=0;
虚拟bool rezizeable()=0;
虚拟布尔hasfocus()=0;
})
事件类
#pragma once
#include "IContain.h"
#include <vector>
#include "Rect.h"
class Form : public IContain
{
public:
Form();
~Form();
bool paint() override;
bool init() override;
Rect<int> Rect() override;
bool hasfocus() override;
Graphics& getgraphics() override;
bool add(IStaticControl & control) override;
bool remove(IStaticControl & control) override;
bool update() override;
pixelvec mousepos() override;
private:
std::vector<IStaticControl> controls;
#pragma once
#include "Graphics.h"
#include "Rect.h"
#include "IContain.h"
class IStaticControl
{
public:
IStaticControl();
~IStaticControl();
//actions
virtual bool init() = 0;
virtual bool paint(Graphics& gfx) = 0;
virtual void update() = 0; // check for input that matches this' conditions. check container's input
virtual void show() = 0;
virtual void hide() = 0;
//info
virtual Rect<int> rect() = 0;
virtual IContain& Container() = 0;
virtual bool rezizeable() = 0;
virtual bool hasfocus() = 0;
#pragma once
#include <vector>
#include "EventBase.h"
#include <queue>
template<typename EventArgsT>
class Myevent
{
public:
Myevent(size_t handlerCount, size_t instanceCount, std::queue<EventBase>&
eventqueue) : Eventintances(instanceCount), handlers(handlerCount) {this->eventqueue = eventqueue};
~Myevent() {};
inline void raise(EventArgsT args) {eventqueue.push(Inst(args, handlers));};
size_t addhandler(void(*handler)(EventArgsT) , bool& success = false) {
size_t size = handlers.size;
for (size_t i; i >= size; i++) {
if (handlers[i] = NULL) { handlers[i] = handler; success = true;
return i; }
}
return 0;
};
void removehandler(size_t i) { handlers[i] = NULL };
class Inst : EventBase {
EventArgsT args;
public:
Inst(EventArgsT args, std::vector<void(*)(EventArgsT)>& handlers) {
this->args = args;
this->handlers = handlers;
};
// go to each function in handlers and invoke them with args
void process() override {};
private:
std::vector<void(*)(EventArgsT)>& handlers;
};
private:
std::vector<void(*)(EventArgsT)> handlers;
std::vector<Inst> Eventintances;
std::queue<EventBase>& eventqueue;
};
#pragma once
#include "Myevent.h"
#include "graphics.h"
#include "IStaticControl.h"
class IContain
{
public:
virtual bool paint() = 0;
virtual bool init() = 0;
virtual Rect<int> rect() = 0;
virtual bool hasfocus() = 0;
virtual Graphics& getgraphics() = 0;
virtual bool add(IStaticControl & control) = 0;
virtual bool remove(IStaticControl & control) = 0;
virtual bool update() = 0;
virtual pixelvec mousepos() = 0;
// same for keyboard input
private:
};
#pragma一次
#包括
#包括“EventBase.h”
#包括
模板
Myevent类
{
公众:
Myevent(大小句柄计数、大小实例计数、标准::队列和
eventqueue):EventIntance(instanceCount),handlerCount(handlerCount){this->eventqueue=eventqueue};
~Myevent(){};
内联void-raise(EventArgsT-args){eventqueue.push(Inst(args,handlers));};
size\u t addhandler(void(*handler)(EventArgsT),bool&success=false){
size\u t size=handlers.size;
对于(大小\u t i;i>=大小;i++){
if(handlers[i]=NULL){handlers[i]=handler;success=true;
返回i;}
}
返回0;
};
void removehandler(size_t i){handlers[i]=NULL};
类指令:事件库{
事件argst args;
公众:
Inst(EventArgsT args、std::vector和handlers){
此->args=args;
这->处理程序=处理程序;
};
//转到处理程序中的每个函数,并使用args调用它们
void process()重写{};
私人:
std::向量和处理器;
};
私人:
向量处理器;
病媒事件;
std::队列和事件队列;
};
控制容器接口类
#pragma once
#include "IContain.h"
#include <vector>
#include "Rect.h"
class Form : public IContain
{
public:
Form();
~Form();
bool paint() override;
bool init() override;
Rect<int> Rect() override;
bool hasfocus() override;
Graphics& getgraphics() override;
bool add(IStaticControl & control) override;
bool remove(IStaticControl & control) override;
bool update() override;
pixelvec mousepos() override;
private:
std::vector<IStaticControl> controls;
#pragma once
#include "Graphics.h"
#include "Rect.h"
#include "IContain.h"
class IStaticControl
{
public:
IStaticControl();
~IStaticControl();
//actions
virtual bool init() = 0;
virtual bool paint(Graphics& gfx) = 0;
virtual void update() = 0; // check for input that matches this' conditions. check container's input
virtual void show() = 0;
virtual void hide() = 0;
//info
virtual Rect<int> rect() = 0;
virtual IContain& Container() = 0;
virtual bool rezizeable() = 0;
virtual bool hasfocus() = 0;
#pragma once
#include <vector>
#include "EventBase.h"
#include <queue>
template<typename EventArgsT>
class Myevent
{
public:
Myevent(size_t handlerCount, size_t instanceCount, std::queue<EventBase>&
eventqueue) : Eventintances(instanceCount), handlers(handlerCount) {this->eventqueue = eventqueue};
~Myevent() {};
inline void raise(EventArgsT args) {eventqueue.push(Inst(args, handlers));};
size_t addhandler(void(*handler)(EventArgsT) , bool& success = false) {
size_t size = handlers.size;
for (size_t i; i >= size; i++) {
if (handlers[i] = NULL) { handlers[i] = handler; success = true;
return i; }
}
return 0;
};
void removehandler(size_t i) { handlers[i] = NULL };
class Inst : EventBase {
EventArgsT args;
public:
Inst(EventArgsT args, std::vector<void(*)(EventArgsT)>& handlers) {
this->args = args;
this->handlers = handlers;
};
// go to each function in handlers and invoke them with args
void process() override {};
private:
std::vector<void(*)(EventArgsT)>& handlers;
};
private:
std::vector<void(*)(EventArgsT)> handlers;
std::vector<Inst> Eventintances;
std::queue<EventBase>& eventqueue;
};
#pragma once
#include "Myevent.h"
#include "graphics.h"
#include "IStaticControl.h"
class IContain
{
public:
virtual bool paint() = 0;
virtual bool init() = 0;
virtual Rect<int> rect() = 0;
virtual bool hasfocus() = 0;
virtual Graphics& getgraphics() = 0;
virtual bool add(IStaticControl & control) = 0;
virtual bool remove(IStaticControl & control) = 0;
virtual bool update() = 0;
virtual pixelvec mousepos() = 0;
// same for keyboard input
private:
};
#pragma一次
#包括“Myevent.h”
#包括“graphics.h”
#包括“IStaticControl.h”
I类容器
{
公众:
虚拟布尔绘制()=0;
虚拟bool init()=0;
虚拟Rect Rect()=0;
虚拟布尔hasfocus()=0;
虚拟图形&getgraphics()=0;
虚拟布尔添加(IStaticControl&control)=0;
虚拟布尔删除(IStaticControl&control)=0;
虚拟布尔更新()=0;
虚拟像素向量mousepos()=0;
//键盘输入也一样
私人:
};
这些都是错误
错误C2061语法错误:标识符“ISTATICECONTRORY”C++游戏C++:\\用户\HOME\文档\Visual Studio 2017 \项目\ C++游戏\ C++游戏\ ICONTH.H 17 < /P>
错误C2061语法错误:标识符“ISTATICECONTRORY”C++游戏C++:\\用户\HOME\文档\Visual Studio 2017 \项目\ C++游戏\ C++游戏\ ICONTH.H 18 < /P> 错误C2143语法错误:缺少“;”在'&'C++游戏C:\\用户\ HOME\文档\ Visual Studio 2017 \项目\ C++游戏\ C++游戏\ ISTATICH控件.H 21 < /P> 错误C2143语法错误:缺少“;”在'&'C++游戏C:\\用户\ HOME\文档\ Visual Studio 2017 \项目\ C++游戏\ C++游戏\ ISTATICH控件.H 21 < /P> 错误C2238“;”前面的意外标记C++游戏C:\Huff\HOME\文档\Visual Studio 2017 \项目\ C++游戏\ C++游戏\ ISTATICH控件.H 21 < /P> 错误C2238“;”前面的意外标记C++游戏C:\Huff\HOME\文档\Visual Studio 2017 \项目\ C++游戏\ C++游戏\ ISTATICH控件.H 21 < /P> 请帮忙
更新:有10个错误代码变化很小您有循环依赖关系
IStaticControl.h
包括IContain.h
,而IContain.h
包括IStaticControl.h
(您忽略了提及文件名,但可以从错误消息中推断出它们。)
这就是为什么此行中未定义IContain
:
virtual IContain& Container() = 0;
。。。因此,编译器认为您试图将名为IContain
的成员变量声明为隐式int
:
virtual int IContain; & Container() = 0;
这就是为什么它抱怨数据成员是
virtual
、隐式int
、以及涉及的语法错误代码>和&
现在显示13个错误,错误是什么?添加您得到的错误?我认为行“&”之前缺少语法:virtualicontain&Container()=