我正在寻找创建两个类,每个类包含另一个类类型的对象.我怎样才能做到这一点?如果我不能这样做,是否有一个解决方法,比如每个类包含一个指向另一个类类型的指针?谢谢!
这就是我所拥有的:
文件:bar.h
#ifndef BAR_H
#define BAR_H
#include "foo.h"
class bar {
public:
foo getFoo();
protected:
foo f;
};
#endif
Run Code Online (Sandbox Code Playgroud)
文件:foo.h
#ifndef FOO_H
#define FOO_H
#include "bar.h"
class foo {
public:
bar getBar();
protected:
bar b;
};
#endif
Run Code Online (Sandbox Code Playgroud)
文件:main.cpp
#include "foo.h"
#include "bar.h"
int
main (int argc, char **argv)
{
foo myFoo;
bar myBar;
}
Run Code Online (Sandbox Code Playgroud)
$ g ++ main.cpp
In file included from foo.h:3,
from main.cpp:1:
bar.h:6: error: ‘foo’ does not name a …Run Code Online (Sandbox Code Playgroud) 我有兴趣为Ubuntu编写一个替换登录屏幕,该屏幕会向用户显示拼图而不是提示输入密码.我正在寻找关于如何创建这个的一些建议.我是一名具有多年经验的专业程序员,但我不熟悉Linux应用程序编程,知道如何开始这个特定的项目.谢谢!
cc -o abgr abgr.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
/usr/bin/ld: cannot find -lXmu
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
什么是" lXmu"?如何编译?
我正在尝试学习如何编写OpenGL着色器.为什么在我的机器上运行时此代码分段会出错?(我正在使用Ubuntu 10.04,我称之为shader.cpp.)
#include <GL/glut.h>
#include <iostream>
using namespace std;
int
main (int argc, char **argv)
{
GLuint myVertexShader = glCreateShader(GL_VERTEX_SHADER);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下Makefile编译它:
CC=g++
CFLAGS=-c -Wall -DGL_GLEXT_PROTOTYPES
LDFLAGS= -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
SOURCES=shader.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=shader
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -rf *o $(EXECUTABLE)
check-syntax:
$(CC) -o nul -S ${CHK_SOURCES}
Run Code Online (Sandbox Code Playgroud)
它似乎是调用glCreateShader的行上的分段错误.我没有运气找到这个问题的根源.我是初学者.谢谢!
注意:此代码表示的是我第一次尝试使用OpenGL编写一个简单的着色器.如果一切都搞错了,请随意发布一些有效的代码.我真正想要的是得到一些我可以编译和运行的东西.
我最近在七周内购买了七种语言一书,并阅读了关于Ruby的章节.在介绍块的部分(第40页)中,给出了一个代码示例,它说明了为了有条件地执行某些事情而使用块:
in_case_of_emergency do
use_credit_card
panic
end
def in_case_of_emergency
yield if emergency?
end
Run Code Online (Sandbox Code Playgroud)
这段代码对我来说没什么意义,本书没有提供太多解释.我想知道你们中的一位Ruby大师是否会介意帮助我解决这个问题.
你怎么能同时拥有一个块和一个同名的函数?你怎么定义"紧急情况?" 我不能在没有抱怨的情况下在IRB中创建块:
NoMethodError: undefined method `in_case_of_emergency' for main:Object
from (irb):1
from :0
Run Code Online (Sandbox Code Playgroud)
您将如何调用此代码来演示它是如何工作的?谢谢!
我有兴趣编写OpenGL着色器,但我不确定我的显卡是否足以支持这个或者我的系统配置正确以使用软件替代(Mesa).如何判断我的计算机是否支持OpenGL着色器?(我使用的是Ubuntu 10.04)到目前为止,我已经尝试了三次测试,并且每个人都得到了相互矛盾的答案:
1)我下载,编译和运行成功从示例代码中一个OpenGL着色器程序的OpenGL入门第三版位于这里.但是,同一章中实现其他OpenGL着色器的一些其他代码示例不会运行.其中一些甚至导致我的计算机崩溃或输出窗口用闪烁的颜色做有趣的事情,非常奇怪.
2)我运行以下命令并获得:
$ glxinfo | grep "OpenGL version"
OpenGL version string: 1.5 Mesa 7.7.1
Run Code Online (Sandbox Code Playgroud)
这似乎表明我正在运行OpenGL 1.5,但Mesa版本(据我所知它是OpenGL 2.0的软件实现.不是那么快,但功能与硬件中的真实交易相同)似乎足够好运行OpenGL 2.0.如何判断我的代码使用哪个驱动器,OpenGL 1.5或Mesa 7.7.1?
3)我写了一些代码来输出计算机上的OpenGL版本并得到以下输出:
$ ./version
OpenGL Version major=1, minor=5
GLSL Version major=0, minor=0
Run Code Online (Sandbox Code Playgroud)
这对Mesa没有任何说明,并且会让我相信我正在运行OpenGL 1.5.请帮助我了解我正在运行的版本,所以我可以知道是否需要跑到商店购买新的显卡才能确信着色器会运行.谢谢!
PS这是代码:
#include <GL/glut.h>
#include <stdio.h>
#include <string.h>
void getGlVersion(int *major, int *minor)
{
const char *verstr = (const char *) glGetString(GL_VERSION);
if ((verstr == NULL) || (sscanf(verstr,"%d.%d", major, minor) != 2))
{
*major = *minor = 0;
fprintf(stderr, "Invalid GL_VERSION format!!!\n"); …Run Code Online (Sandbox Code Playgroud) 我有一个Perl脚本,其字符串可能包含或不包含ASCII字符代码中的字符146.我有兴趣在正则表达式中使用chr()函数来查明该字符串是否确实包含该字符.如果角色在那里,我想用"'"字符替换它.
这可能吗?如果不是这样做的另一种方式是什么?
这个让我难过.谢谢!